获取多维 NumPy 数组中最大值的位置
- 2025-04-17 09:02:00
- admin 原创
- 14
问题描述:
如何获取多维 NumPy 数组中最大值的位置(索引)?
解决方案 1:
该argmax()
方法应该有帮助。
更新
(读完评论后) 我相信该argmax()
方法也适用于多维数组。链接的文档给出了一个示例:
>>> a = array([[10,50,30],[60,20,40]])
>>> maxindex = a.argmax()
>>> maxindex
3
更新 2
(感谢KennyTM的评论)您可以使用unravel_index(a.argmax(), a.shape)
将索引作为元组获取:
>>> from numpy import unravel_index
>>> unravel_index(a.argmax(), a.shape)
(1, 0)
解决方案 2:
(编辑) 我指的是一个已被删除的旧答案。而且被接受的答案是在我的答案之后。我同意那argmax
比我的答案好。
这样做不是更易读/直观吗?
numpy.nonzero(a.max() == a)
(array([1]), array([0]))
或者,
numpy.argwhere(a.max() == a)
解决方案 3:
您可以简单地编写一个函数(仅在 2d 中有效):
def argmax_2d(matrix):
maxN = np.argmax(matrix)
(xD,yD) = matrix.shape
if maxN >= xD:
x = maxN//xD
y = maxN % xD
else:
y = maxN
x = 0
return (x,y)
解决方案 4:
另一种方法是将numpy
数组更改为list
并使用max
方法index
:
List = np.array([34, 7, 33, 10, 89, 22, -5])
_max = List.tolist().index(max(List))
_max
>>> 4
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD