gpt4 book ai didi

numpy - 两台计算机上相同的numpy均值计算结果不同

转载 作者:行者123 更新时间:2023-12-01 01:00:08 25 4
gpt4 key购买 nike

我有两台带有 python 2.7.2(MSC v.1500 32 位(英特尔)] on win32)和 numpy 1.6.1 的计算机。

numpy.mean(data)

返回
1.13595094681 on my old computer 


1.13595104218 on my new computer

在哪里
Data = [ 0.20227873 -0.02738848  0.59413314  0.88547146  1.26513398  1.21090782
1.62445402 1.80423951 1.58545554 1.26801944 1.22551131 1.16882968
1.19972098 1.41940248 1.75620842 1.28139281 0.91190684 0.83705413
1.19861531 1.30767155]

在这两种情况下
s=0
for n in data[:20]:
s+=n
print s/20


1.1359509334

谁能解释为什么以及如何避免?

疯子

最佳答案

如果您想避免两者之间的任何差异,则将它们明确地设为 32 位或 64 位浮点数组。 NumPy 使用其他几个可能是 32 位或 64 位的库。请注意,四舍五入也可能出现在您的打印语句中:

>>> import numpy as np
>>> a = [0.20227873, -0.02738848, 0.59413314, 0.88547146, 1.26513398,
1.21090782, 1.62445402, 1.80423951, 1.58545554, 1.26801944,
1.22551131, 1.16882968, 1.19972098, 1.41940248, 1.75620842,
1.28139281, 0.91190684, 0.83705413, 1.19861531, 1.30767155]
>>> x32 = np.array(a, np.float32)
>>> x64 = np.array(a, np.float64)
>>> x32.mean()
1.135951042175293
>>> x64.mean()
1.1359509335
>>> print x32.mean()
1.13595104218
>>> print x64.mean()
1.1359509335

另一点需要注意的是,如果您有多线程的较低级别的库(例如,atlas、lapack),那么对于大型数组,由于可能的操作顺序和浮点精度,您的结果可能会有所不同.

此外,您处于 32 位数字的精度限制:
>>> x32.sum()
22.719021
>>> np.array(sorted(x32)).sum()
22.719019

关于numpy - 两台计算机上相同的numpy均值计算结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13421159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com