首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是什么原因导致numpy.nanstd()返回nan?

是什么原因导致numpy.nanstd()返回nan?
EN

Stack Overflow用户
提问于 2015-03-10 00:53:12
回答 2查看 8.2K关注 0票数 7

我有一个比较大的一维阵列(20000次观测).当我计算标准偏差、平均值、和等统计数据时,我得到了nan值,但是当我从同一个数组计算出一个扰动时,我得到了我所期望的值。我尝试了一些函数,比如numpy.nanstd、nanmean。我做错什么了?我正在使用python 2.7.9

EN

回答 2

Stack Overflow用户

发布于 2015-03-10 10:00:01

有三种情况下np.nanstd可能返回NaN

  1. 如果输入为空
  2. 如果输入中的所有元素都是NaN
  3. 如果其中一个元素是正的或负的无穷大。要理解发生这种情况的原因,请记住标准偏差的公式是

因为x包含inf,所以x的平均值也是inf。因此,在计算偏离平均值时,至少有一个元素等于inf。如果您在IPython提示符下尝试这样做,您将看到inf - inf被定义为NaN。

在前两种情况下,您应该得到一个有用的警告:

代码语言:javascript
运行
复制
RuntimeWarning: Degrees of freedom <= 0 for slice.
票数 11
EN

Stack Overflow用户

发布于 2020-05-13 20:09:18

np.nanstd的inf输出的另一个可能解释是Numpy数据类型用于存储数据。见下面的例子:

代码语言:javascript
运行
复制
import numpy as np

a = np.array([1239., 1485.,   63.,  393.,   37., 1186.,   13.,  402.,  404., 915.], dtype='float16')
print(np.nanstd(a)) # returns inf

a = a.astype('float32')
print(np.nanstd(a)) # returns 519.87177
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28954429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档