What\'s the easiest, most Pythonic way to divide one numpy array by another (of the same shape, element-wise) only where both arrays are non-zero?
Where either the d
I would do it in two lines:
z = x/y
z[y == 0] = 0
As you said, if only the element in x
is 0, z
will already be 0 at that position. So let NumPy handle that, and then fix up the places where y
is 0 by using NumPy's boolean indexing.
This still tries to divide by 0, but it gives the correct result:
np.where(b==0, 0, a/b)
To avoid doing the divide-by-zero, you can do:
m = b!=0
c = np.zeros_like(a)
np.place(c, m, a[m]/b[m])