Python 平均数误差

Python 平均数误差,python,python-3.x,numpy,nan,Python,Python 3.x,Numpy,Nan,当我在数组上调用numpy.nanmean()时,我得到的结果是NaN。这怎么可能 这是数组ages [22.0 38.0 26.0 35.0 35.0 nan 54.0 2.0 27.0 14.0 4.0 58.0 20.0 39.0 14.0 55.0 2.0 nan 31.0 nan 35.0 34.0 15.0 28.0 8.0 38.0 nan 19.0 nan nan 40.0 nan nan 66.0 28.0 42.0 nan 21.0 18.0 14.0 40.0 27.0

当我在数组上调用
numpy.nanmean()
时,我得到的结果是
NaN
。这怎么可能

这是数组
ages

[22.0 38.0 26.0 35.0 35.0 nan 54.0 2.0 27.0 14.0 4.0 58.0 20.0 39.0 14.0
 55.0 2.0 nan 31.0 nan 35.0 34.0 15.0 28.0 8.0 38.0 nan 19.0 nan nan 40.0
 nan nan 66.0 28.0 42.0 nan 21.0 18.0 14.0 40.0 27.0 nan 3.0 19.0 nan nan
 nan nan 18.0 7.0 21.0 49.0 29.0 65.0 nan 21.0 28.5 5.0 11.0 22.0 38.0 45.0
...
形状

(891,)

np.nanmean(ages)
返回
nan
,正如我们在上面的评论中所指出的,在一维列表中有一个
numpy.ndarray
的数据类型是很奇怪的,当它看起来只有float和
nan
时。这让我觉得您是以一种有缺陷的方式生成数据的,比如从文件内容手动创建数组而不删除空行,等等

要解决此问题,请将数组转换(或查看)为不同的数据类型。试一试

np.nanmean(ages.astype('float64'))
如果有效,则应永久更改其数据类型

ages = ages.astype('float64')

我99%确定有什么问题,所以请重新查看数组生成过程。

因为所有数组都是
nan
?不,这就是你调用
numpy.nanmean()
的要点是沿着一个轴还是跨所有元素?维度是
(891,)
我尝试了
轴=0
,但没有指定它,但我得到了相同的结果mm,这很奇怪。数据怎么会以有缺陷的方式生成?我有这个问题,
astype
技巧不起作用……您如何将数据加载到numpy数组中?如果它以某种方式是表格形式,您可以尝试使用
pandas
(例如
x=pd.read\u table(…)
)加载它,检查生成的序列或数据帧,然后将其转换为具有
x.values
的numpy数组,因为
pandas
numpy
具有更多格式的更强大的文件加载功能。