总和numpy ndarray与给定轴1的3d数组

时间:2016-05-10 14:55:37

标签: python arrays numpy

我有一个形状为(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]])

由于

4 个答案:

答案 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行。