沿给定轴 1 将 numpy ndarray 与 3d 数组相加

新手上路,请多包涵

我有一个形状为 (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 之上,axis=1)中迷路了,为什么这个答案是:

 array([[17, 41, 99],
   [13, 13, 16]])

谢谢

原文由 vincent 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 480
2 个回答

轴是为多于一维的数组定义的。二维数组有两个对应的轴:第一个垂直向下跨行(轴 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]])

原文由 modestfool 发布,翻译遵循 CC BY-SA 4.0 许可协议

该数组的形状 (2,3,3) ;轴 1 是中间轴,尺寸为 3。通过 sum 消除它,剩下的就是 (2,3) ,结果的形状。

解释 3d 有点棘手。我倾向于认为这个数组有 2 个平面,每个平面有 3 行和 3 列。轴 1 上的总和超过每个平面的行。

 1 + 4 + 12 == 17

实际上,您正在将每个 2d 平面减少到 1d 行。

原文由 hpaulj 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题