只有在两个数组都不为零的情况下,才将一个numpy数组除以另一个数组

时间:2013-11-29 21:31:49

标签: numpy

只有在两个数组都不为零的情况下,将一个numpy数组除以另一个(具有相同形状,元素方式)的最简单,最Pythonic方法是什么?

如果除数或被除数为零,则输出数组中的对应元素应为零。 (当除数为零时,这是默认输出,但当被除数为零时,np.nan是默认输出。)

2 个答案:

答案 0 :(得分:4)

这仍然试图除以0,但它给出了正确的结果:

np.where(b==0, 0, a/b)

为避免进行除零,您可以执行以下操作:

m = b!=0
c = np.zeros_like(a)
np.place(c, m, a[m]/b[m])

答案 1 :(得分:3)

我会分两行:

z = x/y
z[y == 0] = 0

正如你所说,如果只有x中的元素为0,z在该位置已经为0。所以让NumPy处理它,然后使用NumPy的boolean indexing修复y为0的地方。