如何在numpy数组中处理ZeroDivisionError

时间:2015-06-04 08:49:20

标签: python numpy

我有两个大的numpy数组,我需要将它们分开。

由于我正在使用Python 32位,并且数组太大,以避免FloatingPointError,我正在做,例如:

x = numpy.array([...],dtype=object)
y = numpy.array([...].dtype=object)

问题在于,在数组y中,一些元素可以是0.0

所以,我的问题是,如何处理计算x/y并避免ZeroDivisionError

例如,如果nan中的元素为0,我想强制y。因此,对于数组中的特定元素,计算x/y=nan

2 个答案:

答案 0 :(得分:1)

dtype = object更改为dtype = float,因此除以零不会引发运行时错误,但会将其视为inf,而不是将inf更改为零。

a = np.array([1,2,3], dtype='float')
b = np.array([0,1,3], dtype='float')
c = a / b
c
array([ inf,   2.,   1.])
c[c == np.inf] = 0
c
array([ 0.,  2.,  1.])

答案 1 :(得分:0)

使用蒙面数组,

x = numpy.array([...],dtype=object)
y = numpy.array([...].dtype=object)

x_m = numpy.ma.array(x, mask=(x==0))
y_m = numpy.ma.array(y, mask=(y==0))

print(x_m/y_m)