np.argmax(axis=0) 如何在 3D 数组上工作?

How does np.argmax(axis=0) work on 3D arrays?

我卡住了,np.argmax(arr, axis=0) 是如何工作的?我知道 np.argmax(axis=0) 如何在二维数组上工作。但是这个3D的真的让我很困惑。

我的代码:

   arr = np.array([[[ 1,  2,  3],
                   [ 4,  5,  6],
                   [ 7,  8,  9],
                   [10, 11, 12]],
                   
                   [[13, 14, 15],
                   [16, 17, 18],
                   [19, 20, 21],
                   [22, 23, 24]],
                   
                   [[25, 26, 27],
                   [28, 29, 30],
                   [31, 32, 33],
                   [34, 35, 36]]])

操作:

np.argmax(arr, axis = 0)

输出:

array([[2, 2, 2],
       [2, 2, 2],
       [2, 2, 2],
       [2, 2, 2]], dtype=int64)

仅供参考 - 我确实知道 np.argmax(axis=0) 如何在二维数组上工作。但是这个3D的真的让我很困惑。

你需要更好地理解这里的 axis=0 是什么。可以理解为矩形的高度级别。所以您的输出显示了该矩形的不同级别:

   level 0       level 1       level 2
[ 1,  2,  3]  [13, 14, 15]  [16, 17, 18]
[ 4,  5,  6]  [16, 17, 18]  [19, 20, 21]
[ 7,  8,  9]  [19, 20, 21]  [22, 23, 24]
[10, 11, 12]  [22, 23, 24]  [25, 16, 27]

然后 argmax 描述了达到 max 值的水平指数。他们是:

[16, 17, 18]
[19, 20, 21]
[22, 23, 24]
[25, 16, 27]

对于这些单元格中的任何一个,它绝对是最高级别(2 号) 所以每个单元格的 argmax 都分配给 2.