我需要计算超过1000行的数组的列的平均值。
np.mean(some_array)
给了我
inf
作为输出
但我很确定价值还可以。我正在将here中的csv加载到我的Data
变量和列'水泥'健康"健康"从我的角度来看。
In[254]:np.mean(Data[:230]['Cement'])
Out[254]:275.75
但如果我增加行数 问题开始了:
In [259]:np.mean(Data[:237]['Cement'])
Out[259]:inf
但是当我查看数据时
In [261]:Data[230:237]['Cement']
Out[261]:
array([[ 425. ],
[ 333. ],
[ 250.25],
[ 491. ],
[ 160. ],
[ 229.75],
[ 338. ]], dtype=float16)
我找不到这种行为的原因 P.S这发生在Python 3.x中使用wakari(基于云的Ipython)
Numpy Version' 1.8.1'
我正在加载数据:
No_Col=9
conv = lambda valstr: float(valstr.replace(',','.'))
c={}
for i in range(0,No_Col,1):
c[i] = conv
Data=np.genfromtxt(get_data,dtype=float16 , delimiter='\t', skip_header=0, names=True, converters=c)
答案 0 :(得分:16)
我猜这个问题是精确的(正如其他人也评论过的那样)。直接从我们看到的mean()
文档中引用
注释
算术平均值是沿轴分割的元素之和 按元素数量。
注意,对于浮点输入,平均值是使用 输入具有相同的精度。根据输入数据,这可以 导致结果不准确,尤其是
float32
(请参阅 例子如下)。使用指定更高精度的累加器dtype
关键字可以缓解此问题。
由于您的数组类型为float16,因此精度非常有限。使用dtype=np.float64
可能会减轻溢出。另请参阅mean()
文档中的示例。