运行时警告:在最大值中遇到无效值

10 投票
1 回答
23112 浏览
提问于 2025-04-17 17:48

在numpy中出现了奇怪的行为(是不是bug??)。和文档说的不一样,下面的代码会给出一个运行时警告:在fmax中遇到了无效值

a = np.random.uniform(0.1, 0.4, (5, 5))
b = np.random.uniform(0, 3.5, (5, 5))
b[0, 0] = np.nan

c = np.fmax(a, b) # Same problem with c = np.maximum(a, b)

我现在很困扰,因为我需要在我的数组中保留这些NaN(不是数字),而且现在我的函数在iPython中因为这个烦人的警告而停止运行(其实它们并没有真的停止,但这实在是太烦人了)

编辑

numpy版本 1.6.1

ipython版本 0.13.1

1 个回答

15

我也遇到过同样的问题。这些警告是numpy故意设计的,目的是提醒用户在使用这个框架时可能会遇到一些限制。上面代码中的c值仍然会返回,所以它的功能是正常的。

如果你不想再看到这些特定的错误警告,可以按照下面的代码来修改numpy的警告设置:

np.seterr(invalid='ignore')

这样你就不会再看到无效值的警告了。

撰写回答