我試圖獲取Numpy數組中最大元素的索引。 這可以使用numpy.argmax
完成。我的問題是,我想找到整個陣列中最大的元素,並獲得指數。返回非平坦索引的numpy數組的argmax
numpy.argmax
可以沿着一個軸應用,這不是我想要的,或者在平面陣列上,這是我想要的。
我的問題是,使用numpy.argmax
與axis=None
返回平面索引時,我想要的多維索引。
我可以使用divmod
來獲得一個非平坦的索引,但這感覺很難看。有沒有更好的方法來做到這一點?
我試圖獲取Numpy數組中最大元素的索引。 這可以使用numpy.argmax
完成。我的問題是,我想找到整個陣列中最大的元素,並獲得指數。返回非平坦索引的numpy數組的argmax
numpy.argmax
可以沿着一個軸應用,這不是我想要的,或者在平面陣列上,這是我想要的。
我的問題是,使用numpy.argmax
與axis=None
返回平面索引時,我想要的多維索引。
我可以使用divmod
來獲得一個非平坦的索引,但這感覺很難看。有沒有更好的方法來做到這一點?
你可以對numpy.argmax()
結果使用numpy.unravel_index()
:
>>> a = numpy.random.random((10, 10))
>>> numpy.unravel_index(a.argmax(), a.shape)
(6, 7)
>>> a[6, 7] == a.max()
True
np.where(a==a.max())
返回最大元素的座標,但必須解析數組兩次。
>>> a = np.array(((3,4,5),(0,1,2)))
>>> np.where(a==a.max())
(array([0]), array([2]))
這與argmax
相比,返回所有元素的座標等於最大值。 argmax
只返回其中的一個(np.ones(5).argmax()
返回0
)。
這將遍歷數組三次,不僅兩次。有一次找到最大值,第二次創建'=='的結果,第三次從這個結果中提取「真」值。請注意,可能有多個項目等於最大值。 – 2012-02-28 14:40:27