我有一個類似于如下所示的 NumPy 陣列,我想根據行的第二項找到最小元素。我可以使用 sorted 函式來實作這一點,是否有內置的 NumPy 函式來實作相同的(可能是單線函式)?
import numpy as np
a = np.array([[1,20], [2,3], [3,3], [4,3], [5,4],[1,2], [2,3], [3,3], [4,3], [5,4],[1,2], [2,3], [3,3], [4,3], [5,4], [1,2], [2,3], [3,3], [4,3], [5,4], [1,2], [2,3]])
min_ = sorted(a, key=lambda row: row[1])[0]
提前非常感謝。
uj5u.com熱心網友回復:
你也可以擁有它
a[np.argmin(a[:, 1])]
uj5u.com熱心網友回復:
嘗試argsort:
>>> a[a[:, 1].argsort()][0]
array([1, 2])
uj5u.com熱心網友回復:
您可以使用numpy.lexsort對多個軸進行排序,如下所示:
>>> a[np.lexsort((a[:,1], a[:,0]))][0]
array([ 1, 2])
在 python 中,排序保證是穩定的。如果您的值與第二列中的其他值相似,那么您可能會得到錯誤的答案。
參考:
排序穩定性和復雜排序
排序保證是穩定的。這意味著當多個記錄具有相同的鍵時,它們的原始順序將被保留。
>>> a = np.array([[2,1], [1,1]])
>>> a[np.argmin(a[:, 1])]
array([ 2, 1])
>>> a[a[:, 1].argsort()][0]
array([ 2, 1])
>>> a[np.lexsort((a[:,1], a[:,0]))][0]
array([ 1, 1])
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/474650.html
上一篇:帶有列的熊貓操作
