我需要计算超过1000行的数组的列的平均值.
np.mean(some_array)
给我
inf
输出
但我很确定价值还可以.我从这里加载一个csv 到我的Data
变量,从我的观点来看,'cement'列是"健康的".
In[254]:np.mean(Data[:230]['Cement'])
Out[254]:275.75
Run Code Online (Sandbox Code Playgroud)
但如果我增加问题的行数:
In [259]:np.mean(Data[:237]['Cement'])
Out[259]:inf
Run Code Online (Sandbox Code Playgroud)
但是当我看数据时
In [261]:Data[230:237]['Cement']
Out[261]:
array([[ 425. ],
[ 333. ],
[ 250.25],
[ 491. ],
[ 160. ],
[ 229.75],
[ 338. ]], dtype=float16)
Run Code Online (Sandbox Code Playgroud)
我没有找到这种行为的原因PS这种情况发生在Python 3.x中使用wakari(基于云的Ipython)
Numpy版本'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)
Run Code Online (Sandbox Code Playgroud)
Cra*_*opi 19
我猜这个问题是精确的(正如其他人也评论过的那样).直接从mean()
我们看到的文档中引用
笔记
算术平均值是沿轴的元素之和除以元素的数量.
请注意,对于浮点输入,使用输入具有的相同精度计算平均值.根据输入数据,这可能导致结果不准确,尤其是
float32
(参见下面的示例).使用dtype
关键字指定更高精度的累加器 可以缓解此问题.
由于您的数组是float16类型,因此精度非常有限.使用dtype=np.float64
可能会缓解溢出.另请参阅mean()
文档中的示例.
归档时间: |
|
查看次数: |
5453 次 |
最近记录: |