我想找到一些优雅的方法,如何在带有python索引的2D数组中找到最大值。我用
np.amax(array)
用于搜索最大值,但是我不知道如何获取索引。当然,我可以通过for循环找到它,但是我认为有更好的方法。有人可以帮我吗?预先谢谢你。
答案 0 :(得分:2)
请参阅此answer,其中也详细说明了如何找到最大值及其索引,您可以使用argmax()
>>> a = array([[10,50,30],[60,20,40]])
>>> maxindex = a.argmax()
>>> maxindex
3
您可以使用unravel_index(a.argmax(), a.shape)
将索引作为元组获取:
>>> from numpy import unravel_index
>>> unravel_index(a.argmax(), a.shape)
(1, 0)
答案 1 :(得分:1)
在这里,您可以使用返回的索引测试最大值,在打印索引时,返回的索引应类似于(array([0], dtype=int64), array([2], dtype=int64))
。
import numpy as np
a = np.array([[200,300,400],[100,50,300]])
indices = np.where(a == a.max())
print(a[indices]) # prints [400]
# Index for max value found two times (two locations)
a = np.array([[200,400,400],[100,50,300]])
indices = np.where(a == a.max())
print(a[indices]) # prints [400 400] because two indices for max
#Now lets print the location (Index)
for index in indices:
print(index)
答案 2 :(得分:-1)
您可以使用argmax()来获取最大值的索引。
a = np.array([[10,50,30],[60,20,40]])
maxindex = a.argmax()
print maxindex
它应该返回:
3
然后,您只需要计算该值即可获取行索引和列索引。
最佳