Ale*_*Gao 28 python arrays numpy runtime
我经历了RuntimeWarning
 RuntimeWarning: invalid value encountered in less_equal
由我的这行代码生成:
center_dists[j] <= center_dists[i]
两个center_dists[j]和center_dists[i]是numpy的阵列
这个警告可能是什么原因?
Div*_*kar 36
这很可能是因为np.nan涉及的输入中的某个地方.它的一个例子如下所示 - 
In [1]: A = np.array([4, 2, 1])
In [2]: B = np.array([2, 2, np.nan])
In [3]: A<=B
RuntimeWarning: invalid value encountered in less_equal
Out[3]: array([False,  True, False], dtype=bool)
对于涉及的所有那些比较np.nan,它将输出False.让我们确认它进行broadcasted比较.这是一个样本 - 
In [1]: A = np.array([4, 2, 1])
In [2]: B = np.array([2, 2, np.nan])
In [3]: A[:,None] <= B
RuntimeWarning: invalid value encountered in less_equal
Out[3]: 
array([[False, False, False],
       [ True,  True, False],
       [ True,  True, False]], dtype=bool)
请注意输出中的第三列,它对应于涉及第三个元素的比较np.nan,B并产生所有False值.
作为Divakar的回答及其对如何抑制的评论的后续措施RuntimeWarning,一种更安全的方法是仅使用(docs)在本地抑制它们:最好在与yield 进行比较时发出警告,而仅在进行比较时才忽略警告真正的目的是什么。以下是OP的示例:with np.errstate()np.nanFalse
with np.errstate(invalid='ignore'):
  center_dists[j] <= center_dists[i]
退出该with块后,错误处理将重置为之前的状态。
取而代之的是invalid value encountered,也可以忽略所有错误all='ignore'。有趣的是kwargs,的文档中缺少np.errstate(),但是的文档中没有np.seterr()。(似乎是np.errstate()文档中的一个小错误。)
| 归档时间: | 
 | 
| 查看次数: | 42864 次 | 
| 最近记录: |