python - Numpy.mean 返回数组和数组副本的不同结果

标签 python numpy precision

我有一个问题可以归结为以下几点:

import numpy as np

X = np.array([[98489.46, 98491.95000000001, 98496.93000000001,
98499.42000000001, 98504.40000000001, 98506.89000000001,
98511.87000000001, 98514.36000000002, 98519.34000000001,
98521.83], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], order='F')

Y = X.copy()
assert(np.array_equal(X, Y))

print(X.mean(axis=1)[0] - X[0, :].mean())

print(Y.mean(axis=1)[0] - Y[0, :].mean())

第一种情况打印出 -1.4551915228366852e-11,这让我感到意外。它基本上是说第一行的平均值与第一行的平均值不同。

第二种情况打印 0,这在孤立结果方面是预期的 - 但我没想到这与第一种情况不同,因为 Y 是只是 X 的(我猜是内存连续的)副本。

也许这一切都可以通过求和的顺序来解释,但这里到底发生了什么?

最佳答案

a.copy() 方法等同于np.array(a)。如 docs 所述, 要获得具有相同内存布局的副本,您应该将 order 指定为:

Y = X.copy(order='F')

meansum 等函数具有固有的浮点精度,这可能是该内存布局错误的根源。我在使用命令“K”、“A”或“C”时遇到 0 个错误(numpy 默认值)

关于python - Numpy.mean 返回数组和数组副本的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53085232/

相关文章:

python - 更新到 Django 2.2.4 和 python 3.7 (toml.py) 后无法运行 mange.py runserver

python - Django 1.6 中的部分索引

python - 如何将空格分隔的数据读入 numpy 数组?

python - 如何使用 os windows 在 python 3 中安装 matplotlib

Python isinstance() 的 float 失败断言测试

python - 我怎样才能加快这个 python 代码的速度?

python - 在 python 中获取 Windows 版本的更好方法是什么?

precision - IEEE-754 单精度和 double 格式是如何确定的?

Python Numpy recarray 排序双向

opengl-es - 着色器 MAD 优化和精度问题