我有一個2維NumPy數組。我知道如何獲得軸上的最大值:如何獲取沿一個軸的numpy陣列中最大元素的索引
>>> a = array([[1,2,3],[4,3,1]])
>>> amax(a,axis=0)
array([4, 3, 3])
如何獲取最大元素的索引?所以我想作爲輸出array([1,1,0])
我有一個2維NumPy數組。我知道如何獲得軸上的最大值:如何獲取沿一個軸的numpy陣列中最大元素的索引
>>> a = array([[1,2,3],[4,3,1]])
>>> amax(a,axis=0)
array([4, 3, 3])
如何獲取最大元素的索引?所以我想作爲輸出array([1,1,0])
>>> a.argmax(axis=0)
array([1, 1, 0])
v = alli.max()
index = alli.argmax()
x, y = index/8, index%8
>>> import numpy as np
>>> a = np.array([[1,2,3],[4,3,1]])
>>> i,j = np.unravel_index(a.argmax(), a.shape)
>>> a[i,j]
4
這很好,因爲它適用於多維數組。 – user1311069 2014-09-24 21:58:51
請注意,這個答案是誤導性的。它會根據OP的要求計算整個軸上數組的最大元素索引,而不是沿給定軸的索引:它是錯誤的。而且,如果有多個最大值,它將只檢索第一個最大值的索引:應該指出這一點。嘗試用'a = np.array([[1,4,3],[4,3,1]])'看看它是否返回'i,j == 0,1',並且忽略' I,J == 1,0'。對於所有最大值的索引,而不是'i,j = where(a == a.max()'。 – gg349 2015-09-02 19:28:05
argmax()
只返回每一行的第一次出現。 http://docs.scipy.org/doc/numpy/reference/generated/numpy.argmax.html
如果你需要爲成形陣列做到這一點,這個工作比unravel
:
import numpy as np
a = np.array([[1,2,3], [4,3,1]]) # Can be of any shape
indices = np.where(a == a.max())
你也可以改變你的條件:上述
indices = np.where(a >= 1.5)
給你結果以你要求的形式出現。或者,您可以通過以下方式將其轉換爲x,y座標列表:
x_y_coords = zip(indices[0], indices[1])
這對我來說不起作用...你的意思是'indices = np.where(a == a.max())'在第3行? – atomh33ls 2014-07-07 10:32:00
你是對的,atomh33ls!感謝您發現這一點,我已經修復了這個聲明,以包含適當的條件的第二個等號 – SevakPrime 2014-08-28 19:14:14
@SevakPrime,指出了第二個錯誤out @ by atomh33ls,'.max()'而不是'.argmax()'。請編輯回答 – gg349 2015-08-30 15:37:47
具體而言,「最大元素」是什麼意思? – 2013-04-24 11:20:08