【发布时间】:2020-04-07 06:16:14
【问题描述】:
使用以下数组:
In [103]: da
Out[103]:
array([[[ 6, 22, 3],
[ 4, 9, 20],
[21, 16, 0]],
[[ 2, 25, 11],
[ 5, 17, 18],
[23, 13, 7]],
[[10, 14, 26],
[ 8, 1, 19],
[15, 12, 24]]])
In [104]: da.shape
Out[104]: (3, 3, 3)
具有最大值的元素的索引可以通过以下方式确定:
In [114]: np.unravel_index(np.argmax(da), da.shape)
Out[114]: (2, 0, 2)
并检查:
In [115]: da[2, 0, 2]
Out[115]: 26
但是否可以在不循环/迭代的情况下确定包含每组整数 da[:, i1, i2] 的最大值的 9 个索引,其中 i1 和 i2 是 0、1 或 2?
例如,da[:, 0, 0] 组为 6、2 和 10。最大值为 10,其索引为 da[2, 0, 0]。
【问题讨论】:
-
您是否正在寻找
axis到argmax的参数? -
@MadPhysicist,我试过了,但
np.unravel_index(np.argmax(da, axis=x), da.shape)返回的索引大多为零。 -
我已经发布了一个答案,展示了如何正确地做到这一点。如果你精心制作,你应该几乎永远不需要解开索引。