'double_scalars'警告中遇到的无效值,可能是numpy

The*_*dor 60 python warnings numpy matplotlib

当我运行我的代码时,我会偶尔以四个为一组获得这些警告.我试图通过在某些语句之前和之后放置调试消息来定位源,以确定其原点.

Warning: invalid value encountered in double_scalars
Warning: invalid value encountered in double_scalars
Warning: invalid value encountered in double_scalars
Warning: invalid value encountered in double_scalars
Run Code Online (Sandbox Code Playgroud)

这是一个Numpy警告,什么是双标量?

从Numpy我用

min(), argmin(), mean() and random.randn()
Run Code Online (Sandbox Code Playgroud)

我也使用Matplotlib

小智 46

在我的情况下,我发现它是零除.

  • 除零是否会引发"ZeroDivisionError"? (7认同)
  • @jfn通常,但是numpy有时会把它变成警告,因为从技术上讲,`nan`是IEEE标准对零除的有效答案。 (3认同)
  • 我也是.我试图比较完全相同的向量并得到除零 (2认同)
  • 或者取一个空列表的平均值.哎呀. (2认同)

eum*_*iro 45

它看起来像一个浮点计算错误.检查numpy.seterr函数以获取有关它发生位置的更多信息.

  • 具体来说,使用 numpy.seterr('raise')` 来引发任何错误的异常。 (12认同)

Jef*_*eff 11

有时NaNs或数据中的空值将使用Numpy生成此错误.如果您从诸如CSV文件或类似文件中提取数据,然后使用numpy数组对数据进行操作,则问题可能源于您的数据摄取.您可以尝试使用已知值为代码提供一小组数据,并查看是否得到相同的结果.

  • 类似的事情发生在我身上,在我的情况下,我在一个空数组上调用numpy的平均函数. (4认同)

Dav*_*ave 9

传递给的零大小数组会numpy.mean引发此警告(如几条评论所示)。

对于其他一些候选人:

  • median 也会在零大小的数组上引发此警告。

其他候选人没有提出这个警告:

  • min,argminValueError在空数组上引发
  • randn需要*arg; usingrandn(*[])返回一个随机数
  • std,var返回nan一个空数组