首页 > 解决方案 > Numpy在Array中查找最大数字的索引

问题描述

我有一个看起来有点像这样的大型二维 Numpy 数组,我想找到数组中最大数字的索引。

[[0.09911875 0.087047   0.07395894 ... 0.10334793 0.10507131 0.10572167]
 [0.09951172 0.08808007 0.07559184 ... 0.0953996  0.09637988 0.09686002]
 [0.09908096 0.08856899 0.07680183 ... 0.08633772 0.08709209 0.08753099]
 ...
 [0.16518855 0.1658697  0.16564748 ... 0.16108064 0.15890269 0.15795946]
 [0.16250964 0.1616099  0.16255783 ... 0.15931444 0.15753458 0.15655452]
 [0.16211866 0.15905266 0.15936445 ... 0.15891747 0.15701842 0.15521818]]

到目前为止,我尝试使用numpy.where()该函数返回一个坐标元组,但我只能接收一个元组数组,但我想要一个元组,即最高数字的坐标。我也尝试过使用其他 Numpy 方法,例如np.amax, np.maxnp.where但没有成功。


为了进一步解释,如果你有一个像这样的小型二维数组。最大的数字是9.99,最大数字的索引是 (2,2)。

[[2.18, 4.01, 3.49, 1.22]
 [2.34, 5.23, 5.11, 4.23]
 [1.23, 3.42, 9.99, 6.02]
 [2.08, 4.01, 3.49, 1.22]]

标签: pythonnumpy

解决方案


您可以numpy.argmax结合使用该方法numpy.unravel

这是一个最小的工作示例:

import numpy as np

# create random array
a = np.random.random((8, 8))

# find indexes of the maximum value in this array
np.unravel_index(a.argmax(), a.shape)
# > [4, 3]

推荐阅读