我有一个形状为(2,3,3)的numpy ndarray,例如:
array([[[ 1, 2, 3],
[ 4, 5, 6],
[12, 34, 90]],
[[ 4, 5, 6],
[ 2, 5, 6],
[ 7, 3, 4]]])
我迷失在np.sum(在ndarray,轴= 1之上),为什么答案是:
array([[17, 41, 99],
[13, 13, 16]])
由于
答案 0 :(得分:5)
为具有多个维度的数组定义轴。一个 二维阵列有两个相应的轴:第一次运行 垂直向下跨行(轴0),第二次运行 水平跨列(轴1)。
设A为数组,然后在您的示例中,当轴为1时,添加[i,:,k]。同样,对于轴0,添加[:,j,k],当轴为2时,添加[i,j,:]。
A = np.array([[[ 1, 2, 3],[ 4, 5, 6],
[12, 34, 90]],
[[ 4, 5, 6],[ 2, 5, 6],
[ 7, 3, 4]]])
np.sum(A,axis = 0)
array([[ 5, 7, 9],
[ 6, 10, 12],
[19, 37, 94]])
np.sum(A,axis = 1)
array([[17, 41, 99],
[13, 13, 16]])
np.sum(A,axis = 2)
array([[ 6, 15, 136],
[ 15, 13, 14]])
答案 1 :(得分:0)
让我们调用inout数组A
和输出数组B = np.sum(A, axis=1)
。
它的元素B[i, j]
计算为
B[i, j] = np.sum(A[i, :, j])
E.g。第一个元素B[0,0] = 17
是
A[0, :, 0] = array([ 1, 4, 12])
答案 2 :(得分:0)
np.sum()垂直添加值,添加第一个列表中每个子列表的第一个元素:1 + 4 + 12 = 17,然后第二个2 + 5 + 34 = 41等< / p>
答案 3 :(得分:0)
数组的形状为(2,3,3)
;轴1是中间的,大小为3.在sum
之后消除它,并留下(2,3)
,即结果的形状。
解释3d有点棘手。我倾向于认为这个数组有2个平面,每个平面有3行,3列。轴1上的总和超过每个平面的行。
1 + 4 + 12 == 17
实际上,您将每个2d平面减少到1d行。