Python 为什么我不能摆脱RuntimeWarning:在true\u divide中遇到无效值

Python 为什么我不能摆脱RuntimeWarning:在true\u divide中遇到无效值,python,numpy,Python,Numpy,我试图将一个numpy数组除以它自身的一个移位版本。数组包含0,因此自然会出现被零除的问题。但是我想插入一个np。在那里可以解决这个问题。事实并非如此 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],

我试图将一个numpy数组除以它自身的一个移位版本。数组包含
0
,因此自然会出现被零除的问题。但是我想插入一个
np。在那里
可以解决这个问题。事实并非如此

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)
但它仍然发出警告。我怎样才能摆脱这个警告?然而,结果看起来不错


我真的不想开始对数组进行切片,因为生成的数组保持其大小很重要。

如果用NaNs替换零,它会工作。

用NaNs替换零看起来很有效。如果你想为你的回答赢得“信任”。把它贴出来作为答案,我会把它贴上标签作为答案。谢谢