【发布时间】:2020-08-14 05:09:18
【问题描述】:
在我的模拟中,当在 for 循环中达到这样的函数表达式时:
d1ToUse = d2Weights[:,i] > 1e-9
有时会引发警告:
RuntimeWarning: invalid value encountered in greater...
每当抛出此警告时,我想打印出“更大”的值,以检查变量 d2Weights 并消除问题。
对于此警告的某些实例,d2Weights 变量是一个空列表。我试图通过以下任何过滤器过滤掉这些实例,从而从分析中消除它们:
if d2Weights[:,i] == []:
continue
if np.any(d2Weights[:, i] == None):
continue
if np.any(d2Weights[:, i] == np.nan):
continue
if sum(d2Weights[d1ToUse, i]) == 0.0:
continue
if d2Weights[d1ToUse, i] is None:
continue
if np.any(d2Weights[d1ToUse, i] == None):
continue
if np.any(d2Weights[d1ToUse, i] == np.nan):
continue
由于问题仍然存在,我想看看“更大”值是如何检查它并确定根本原因的。
我不想抑制这个警告,因为每当它被抛出时,我的模拟行为都会很奇怪。
如有任何建议,我将不胜感激。
编辑:
d2Weights 是带有浮点数的 numpy 数组。它存储权重,用于使用 RBF 内核进行循环加权平均。
【问题讨论】:
-
你能不使用调试器来检查更大的值和框架调用吗?
-
不要将
==与None或np.nan一起使用。使用is None和np.isnan。也关注dtype。None将仅存在于objectdtype 数组中。np.nan是一个浮点数。 -
您不应该针对空列表
[]测试 numpy 数组。您可以查看shape。 -
让我们了解
d2Weights是什么。形状、数据类型、可能的值。