我正在尝试将numpy数组除以自身的偏移版本。该数组包含0
,因此自然会有除以零的问题。但我认为插入np.where
可以解决该问题。它没。
import numpy as np
tpx = np.array([0.95, 0.9, 0.85, 0.80, 0.75, 0.0, 0.0, 0.0])
px = np.where(tpx[:-1]!=0, tpx[1:]/tpx[:-1], 0)
px = np.where(tpx[:-1]!=0, tpx[1:]/tpx[:-1], 0)
__main__:1: RuntimeWarning: invalid value encountered in true_divide
Out[4]:
array([0.94736842, 0.94444444, 0.94117647, 0.9375 , 0. ,
0. , 0. ])
我也像这样尝试使用
np.isclose
px = np.where(np.isclose(tpx[:-1], 0, atol=1e-12)==False, tpx[1:]/tpx[:-1], 0)
但是它仍然发出警告。我如何摆脱这个警告?但是结果看起来还不错。
我真的不想开始对数组进行切片,因为重要的是保留生成的数组的大小。
最佳答案
如果您用NaN替换零,它会工作
关于python - 为什么我不能摆脱RuntimeWarning:true_divide中遇到无效的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50424766/