我有两个大的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
答案 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)