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

时间:2010-09-22 08:11:22

标签: python numpy warnings 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

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

从Numpy我用

min(), argmin(), mean() and random.randn()

我也使用Matplotlib

7 个答案:

答案 0 :(得分:39)

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

答案 1 :(得分:37)

就我而言,我发现它被零除。

答案 2 :(得分:9)

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

答案 3 :(得分:4)

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

对于其他一些候选人:

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

其他候选人不提出此警告:

  • min,argmin都会在空数组
  • 上提升ValueError
  • randn需要*arg;使用randn(*[])返回单个随机数
  • std,var在空数组上返回nan

答案 4 :(得分:1)

我遇到了类似的问题 - 在...中遇到了无效的值。花了很多时间试图弄清楚是什么导致了这个错误我相信我的情况是由于我的数据帧中的NaN。检查处理pandas中缺少的数据。

无==无 真

np.nan == np.nan 假

当NaN不等于NaN时,除法和乘法之类的算术运算会导致它抛出此错误。

你可以采取一些措施来避免这个问题:

  1. 使用pd.set_option设置分析中要考虑的小数,这样无限小的数字不会触发类似的问题 - ('display.float_format',lambda x:'%。3f'%x)。

  2. 使用df.round()对数字进行舍入,以便Panda从分析中删除剩余的数字。最重要的是,

  3. 将NaN设置为零df = df.fillna(0)。如果用零填充NaN不适用于您的数据集,请小心,因为这会将记录视为零,因此平均值中的N,std等也会发生变化。

答案 5 :(得分:0)

无论何时使用csv导入,都应尝试使用df.dropna()以避免所有此类警告或错误。

答案 6 :(得分:0)

我在计算np.var(np.array([]))时遇到了这个问题。 np.var会将数组大小除以零,在这种情况下。