【发布时间】:2011-04-04 19:07:27
【问题描述】:
如何获取多维 NumPy 数组中最大值的位置(索引)?
【问题讨论】:
-
如果有多个位置的值相同,您需要全部还是只需要第一个(或最后一个或任意一个)?
标签: python arrays indexing numpy
如何获取多维 NumPy 数组中最大值的位置(索引)?
【问题讨论】:
标签: python arrays indexing numpy
【讨论】:
unravel_index(a.argmax(), a.shape) 将索引作为元组获取。
(编辑)我指的是一个已被删除的旧答案。接受的答案是在我之后。我同意argmax 比我的回答更好。
这样做不是更易读/更直观吗?
numpy.nonzero(a.max() == a)
(array([1]), array([0]))
或者,
numpy.argwhere(a.max() == a)
【讨论】:
您可以简单地编写一个函数(仅适用于 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)
【讨论】:
另一种方法是将numpy 数组更改为list 并使用max 和index 方法:
List = np.array([34, 7, 33, 10, 89, 22, -5])
_max = List.tolist().index(max(List))
_max
>>> 4
【讨论】: