我的堆栈是这样的
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]])
我更新了我的问题,我认为现在更清楚了。
答案 0 :(得分:3)
嗯,首先,你没有一堆2D数组,你有三个独立的变量。
幸运的是,NumPy中的大多数函数都采用array_like
参数。而元组(a, b, c)
是"类似数组"足够 - 它将被转换为您应该拥有的3D阵列。
无论如何,采用均值的显而易见的函数是np.mean
。正如文档所说:
默认情况下,平均值取自平顶数组,否则超过指定轴。
所以只需指定你想要的轴 - 新创建的轴0。
np.mean((a,b,c), axis=0)
在您更新的问题中,您现在拥有一个2x3x3阵列a
,而不是三个2x2阵列,a
,b
和c
,您想要横跨第一轴的平均值(尺寸为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.]])