我有一个问题可以归结为以下几点:
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')
mean
或 sum
等函数具有固有的浮点精度,这可能是该内存布局错误的根源。我在使用命令“K”、“A”或“C”时遇到 0 个错误(numpy 默认值)
关于python - Numpy.mean 返回数组和数组副本的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53085232/