如何计算一堆数组的平均值?

时间:2014-12-18 07:17:27

标签: python numpy

我的堆栈是这样的

array([[[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]],

       [[2, 2, 2],
        [2, 2, 2],
        [2, 2, 2]]])

我想要这个结果:

array([[ 1.5,  2. ,  2.5],
       [ 3. ,  3.5,  4. ],
       [ 4.5,  5. ,  5.5]])

我更新了我的问题,我认为现在更清楚了。

2 个答案:

答案 0 :(得分:3)

嗯,首先,你没有一堆2D数组,你有三个独立的变量。

幸运的是,NumPy中的大多数函数都采用array_like参数。而元组(a, b, c)是"类似数组"足够 - 它将被转换为您应该拥有的3D阵列。

无论如何,采用均值的显而易见的函数是np.mean。正如文档所说:

  

默认情况下,平均值取自平顶数组,否则超过指定轴。

所以只需指定你想要的轴 - 新创建的轴0。

np.mean((a,b,c), axis=0)

在您更新的问题中,您现在拥有一个2x3x3阵列a,而不是三个2x2阵列,abc,您想要横跨第一轴的平均值(尺寸为2的轴)。这是一回事,但稍微容易一些:

np.mean(a, axis=0)

当然,4,7和3的平均值是4.666666666666667,而不是4.在您更新的问题中,这似乎是您想要的;在你原来的问题中...我不确定你是想要截断还是舍入,或者你是否想要中位数或其他东西而不是平均值或其他任何东西,但这些都很容易(添加dtype=int64在通话中,请在结果上致电.round(),致电median而不是mean等。)

答案 1 :(得分:2)

>>> a = np.array([[1,2],[3,4]])
>>> b = np.array([[1,5],[6,7]])
>>> c = np.array([[1,8],[8,3]])
>>> np.mean((a,b,c), axis=0)
array([[ 1.        ,  5.        ],
       [ 5.66666667,  4.66666667]])

根据您的输出,您似乎正在寻找中位数而不是意味着

>>> np.median((a,b,c), axis=0)
array([[ 1.,  5.],
       [ 6.,  4.]])