首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python NumPy中的np.mean()与np.average()?

Python NumPy中的np.mean()与np.average()?
EN

Stack Overflow用户
提问于 2013-11-19 01:43:31
回答 5查看 180.2K关注 0票数 225

我注意到

In [30]: np.mean([1, 2, 3])
Out[30]: 2.0

In [31]: np.average([1, 2, 3])
Out[31]: 2.0

但是,应该有一些区别,因为它们毕竟是两个不同的功能。

它们之间有什么区别?

EN

Stack Overflow用户

发布于 2020-05-20 01:23:02

除了已经提到的差异之外,还有另一个非常重要的差异,这是我刚刚通过艰难的方式发现的:与np.mean不同,np.average不允许dtype关键字,这在某些情况下对于获得正确的结果是必不可少的。我有一个从h5文件访问的非常大的单精度数组。如果我沿着轴0和1取平均值,除非我指定dtype='float64',否则我会得到非常错误的结果

>T.shape
(4096, 4096, 720)
>T.dtype
dtype('<f4')

m1 = np.average(T, axis=(0,1))                #  garbage
m2 = np.mean(T, axis=(0,1))                   #  the same garbage
m3 = np.mean(T, axis=(0,1), dtype='float64')  # correct results

不幸的是,除非你知道要找什么,否则你不一定能断定你的结果是错的。出于这个原因,我再也不会使用np.average了,但在任何大型数组上都会使用np.mean(.., dtype='float64')。如果我想要一个加权平均值,我将使用权重向量和目标数组的乘积,然后根据需要使用np.sumnp.mean (也具有适当的精度)来显式计算它。

票数 10
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20054243

复制
相关文章

相似问题

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