rougier / numpy-100

100 numpy exercises (with solutions)
MIT License
12.17k stars 5.74k forks source link

Exercise N62 - There is an unnecessary code, Exercise N80 - IndexError #215

Open Artur-Arstamyan opened 1 month ago

Artur-Arstamyan commented 1 month ago

Exercise 62 - Considering two arrays with shape (1,3) and (3,1), how to compute their sum using an iterator? Code

a = np.random.randint(0, 10, (1, 3))
b = np.random.randint(0, 10, (3, 1))
it = np.nditer([a,b,None])

for x,y,z in it: 
    z = x + y

print(it.operands[2])

Unnecessary part

for x,y,z in it: 
    z = x + y

After it = np.nditer([a,b,None]) it.operands[2] already has that value.

Exercise N80 Current code that gives error

r = [slice(start,stop) for start,stop in zip(R_start,R_stop)]
z = [slice(start,stop) for start,stop in zip(Z_start,Z_stop)]
R[r] = Z[z]

Output

IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices

Solution - Use tuples

r = tuple(slice(start,stop) for start,stop in zip(R_start,R_stop))
z = tuple(slice(start,stop) for start,stop in zip(Z_start,Z_stop))
rougier commented 2 weeks ago

Thanks.