代码之家  ›  专栏  ›  技术社区  ›  bers

对于数组和数组副本,Numpy.mean返回不同的结果

  •  2
  • bers  · 技术社区  · 7 年前

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

    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

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   Tarifazo    7 年前

    a.copy() 方法等价于 np.array(a) docs ,要获取具有相同内存布局的副本,应指定 order 作为:

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

    功能如下 mean sum