[英]Sorting NumPy array with two columns
我有以下數組,其中包含X
和Y
坐標:
arr = array([[ 1., 3.],
[ 6., 6.],
[ 3., 0.],
[ 2., 5.],
[ 0., 3.],
[ 3., 3.],
[ 0., 6.]])
我想知道如何通過首先對X
進行排序然后對Y
進行排序來對該數組進行排序。
我想要這樣的東西:
new_ arr = array([[ 0., 3.],
[ 0., 6.],
[ 1., 3.],
[ 2., 5.],
[ 3., 0.],
[ 3., 3.],
[ 6., 6.]])
您可以使用np lexort函數,可以在此處閱讀更多內容
numpy.lexsort(keys,axis = -1)使用一系列鍵執行間接排序。
給定多個排序鍵(可以將其解釋為電子表格中的列),lexsort返回一個整數索引數組,該數組描述了按多個列排序的順序。 序列中的最后一個鍵用於主排序順序,倒數第二個鍵用於輔助排序順序,依此類推。 keys參數必須是可以轉換為相同形狀的數組的對象序列。 如果為keys參數提供了2D數組,則將其行解釋為排序鍵,並根據最后一行,倒數第二行等進行排序
import numpy as np
arr = np.array([[ 1., 3.],
[ 6., 6.],
[ 3., 0.],
[ 2., 5.],
[ 0., 3.],
[ 3., 3.],
[ 0., 6.]])
ind = np.lexsort(np.transpose(arr)[::-1])
print (arr[ind])
>>>[[ 0. 3.]
[ 0. 6.]
[ 1. 3.]
[ 2. 5.]
[ 3. 0.]
[ 3. 3.]
[ 6. 6.]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.