为什么我无法摆脱RuntimeWarning:在true_divide中遇到无效值

时间:2018-05-19 11:25:10

标签: python numpy

我试图通过自身的移位版本来划分一个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)

但它仍然会发出警告。我怎么能摆脱这个警告?然而,结果看起来还不错。

我真的不想开始切片数组,因为结果数组保持其大小非常重要。

1 个答案:

答案 0 :(得分:2)

如果用NaN替换零

,它会起作用