假设在python中有一个2D数组。我只需要找到具有最高值的元素的索引。
但是,可能有多个元素具有最高价值。我的目标是找到其中任何一个的索引,并且偏好是减少时间和空间的复杂性。
我该怎么做?
一种方法是找到数组的最大值。然后我比较数组中与max值匹配的每个元素,并获得首先匹配的元素的索引。但我不确定这是否是最好的方法。
以下是我目前使用的代码
myarray = np.array([[0] * c for i in range(r)]) #r and c are number of rows and columns
max_myarray = np.argmax(myarray)
for i in range(r):
for j in range(c):
if (myarray[i][j]==max_myarray):
row_index=i
column_index=j
答案 0 :(得分:0)
您只需获取每行上max元素的索引(" j")即可。并选择2D阵列中具有最大元素的行。 以下是您可能会发现有用的示例代码:
N.B :如果您使用的是python 2.7,则此代码是用python 3编写的,只需更改print语句即可。
my_array=[[1,3,4],[5,7,6],[7,3,4]]
max_i=0
max_element=0
max_j=0
i=0
for row in my_array:
if max(row)>max_element:
max_j=row.index( max(row) )
max_i=i
max_element=max(row)
i+=1
print(max_i,max_j)
答案 1 :(得分:0)
您需要任何最高职位吗?获得第一个
numpy.unravel_index(numpy.argmax(A), A.shape)) # (4, 0)
但是,您的示例代码始终会找到最后一次出现,这可以使用
完成numpy.unravel_index(A.size - 1 - numpy.argmax(A[::-1, ::-1]), A.shape) # (4, 4)