本文簡要介紹 python 語言中 numpy.lexsort
的用法。
用法:
numpy.lexsort(keys, axis=- 1)
使用一係列鍵執行間接穩定排序。
給定多個排序鍵(可以解釋為電子表格中的列),lexsort 返回一個整數索引數組,用於說明多列的排序順序。序列中的最後一個鍵用於主要排序順序,倒數第二個鍵用於輔助排序順序,依此類推。鍵參數必須是可以轉換為相同形狀的數組的對象序列。如果為keys參數提供了一個二維數組,它的行將被解釋為排序鍵,並且根據最後一行、倒數第二行等進行排序。
- keys: (k, N) 數組或包含 k (N,) 形序列的元組
k 個不同的“columns” 進行排序。最後一列(如果鍵是二維數組,則為行)是主排序鍵。
- axis: 整數,可選
要間接排序的軸。默認情況下,對最後一個軸進行排序。
- indices: (N,) 整數數組
沿指定軸對鍵進行排序的索引數組。
參數:
返回:
例子:
姓名排序:首先按姓氏,然後按名字。
>>> surnames = ('Hertz', 'Galilei', 'Hertz') >>> first_names = ('Heinrich', 'Galileo', 'Gustav') >>> ind = np.lexsort((first_names, surnames)) >>> ind array([1, 2, 0])
>>> [surnames[i] + ", " + first_names[i] for i in ind] ['Galilei, Galileo', 'Hertz, Gustav', 'Hertz, Heinrich']
對兩列數字進行排序:
>>> a = [1,5,1,4,3,4,4] # First column >>> b = [9,4,0,4,0,2,1] # Second column >>> ind = np.lexsort((b,a)) # Sort by a, then by b >>> ind array([2, 0, 4, 6, 5, 3, 1])
>>> [(a[i],b[i]) for i in ind] [(1, 0), (1, 9), (3, 0), (4, 1), (4, 2), (4, 4), (5, 4)]
請注意,首先根據
a
的元素進行排序。二次排序是根據b
的元素進行的。正常的
argsort
會產生:>>> [(a[i],b[i]) for i in np.argsort(a)] [(1, 9), (1, 0), (3, 0), (4, 4), (4, 2), (4, 1), (5, 4)]
結構化數組按詞法排序
argsort
:>>> x = np.array([(1,9), (5,4), (1,0), (4,4), (3,0), (4,2), (4,1)], ... dtype=np.dtype([('x', int), ('y', int)]))
>>> np.argsort(x) # or np.argsort(x, order=('x', 'y')) array([2, 0, 4, 6, 5, 3, 1])
相關用法
- Python numpy legendre.legint用法及代碼示例
- Python numpy legendre.legmulx用法及代碼示例
- Python numpy less用法及代碼示例
- Python numpy legendre.legroots用法及代碼示例
- Python numpy legendre.legdomain用法及代碼示例
- Python numpy legendre.legfromroots用法及代碼示例
- Python numpy legendre.leg2poly用法及代碼示例
- Python numpy legendre.legone用法及代碼示例
- Python numpy legendre.poly2leg用法及代碼示例
- Python numpy legendre.legdiv用法及代碼示例
- Python numpy legendre.legmul用法及代碼示例
- Python numpy legendre.legadd用法及代碼示例
- Python numpy legendre.legline用法及代碼示例
- Python numpy left_shift用法及代碼示例
- Python numpy legendre.legx用法及代碼示例
- Python numpy legendre.legtrim用法及代碼示例
- Python numpy legendre.legfit用法及代碼示例
- Python numpy legendre.legsub用法及代碼示例
- Python numpy less_equal用法及代碼示例
- Python numpy legendre.legder用法及代碼示例
- Python numpy legendre.legzero用法及代碼示例
- Python numpy linalg.svd用法及代碼示例
- Python numpy laguerre.lagone用法及代碼示例
- Python numpy linalg.pinv用法及代碼示例
- Python numpy logaddexp用法及代碼示例
注:本文由純淨天空篩選整理自numpy.org大神的英文原創作品 numpy.lexsort。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。