python - NumPy:如何检索多维数组中最大值的索引
问题描述
使用以下数组:
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
但是,是否可以在不循环/迭代的情况下确定 9 个索引,da[:, i1, i2]
其中包含 0、1 或 2的每组整数的最大值?i1
i2
例如,组da[:, 0, 0]
为 6、2 和 10。最大值为 10,其索引为da[2, 0, 0]
。
解决方案
该axis
参数允许您指定单个操作轴:
i0 = np.argmax(da, axis=0)
这意味着i0
是一个(3, 3)
数组,其中包含每个对应i1
,的最大值的索引i2
。在您的示例中i1
,any 的最大值是i2
da[i0[i1, i2], i1, i2]
推荐阅读
- java - 杰克逊的 InvalidDefinitionException
- swift - 即使我使用 .randomElement() 方法 (Swift) 2019/2020,每日提醒(通知)也不会发送随机消息
- uwp - Line in style 的 TargetType 在 UWP 中不起作用
- c++ - 类方法返回指向具有模板的类成员的指针
- python - TypeError: print_lol() 得到了一个意外的关键字参数“fh”
- javascript - 当我试图从 datepicker 获取值到该特定字段时,我无法在日期字段中显示默认值
- asp-classic - 通过 SSL 端口 465 使用 ASPEmail 发送电子邮件时出错
- javascript - 单击时如何更改按钮的值?
- python - 如何从json中删除引号?
- uri - Amazon Prime Video India 和 TikTok 的深层链接路径?