我正在尝试将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/

10-14 03:53