我想知道如何能夠通過其中一列中的值對整個數組進行排序。如何根據特定行中的值對numpy數組進行排序?
我:
array([5,2,8,2,4])
和:
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
我想第一個數組追加到第二個這樣的:
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24],
[5, 2, 8, 2, 4]])
然後由數組排序附加的行得到這個:
array([[1, 3, 4, 0, 2],
[6, 8, 9, 5, 7],
[11, 13, 14, 10, 12],
[16, 18, 19, 15, 17],
[21, 23, 24, 20, 22],
[2, 2, 4, 5, 8]])
或本:
array([[ 2, 1, 3, 4, 0],
[ 7, 6, 8, 9, 5],
[12, 11, 13, 14, 10],
[17, 16, 18, 19, 15],
[22, 21, 23, 24, 20],
[ 8, 5, 4, 2, 2]])
,然後取下附列獲得:
array([[1, 3, 4, 0, 2],
[6, 8, 9, 5, 7],
[11, 13, 14, 10, 12],
[16, 18, 19, 15, 17],
[21, 23, 24, 20, 22]])
或:
array([[ 2, 1, 3, 4, 0],
[ 7, 6, 8, 9, 5],
[12, 11, 13, 14, 10],
[17, 16, 18, 19, 15],
[22, 21, 23, 24, 20]])
有沒有執行這一程序代碼。我對python非常陌生。非常感謝!
謝謝,它的作品很神奇!你會不會知道它是如何工作的,因爲我似乎無法從代碼和文檔中找到它?謝謝! – tooty44
'argsort'返回一個將對數組進行排序的索引數組。 'i'中的第一個元素是'c'中具有最低值的位置,等等。您可以使用列表來索引numpy數組,因此'c [i]'會爲您提供'c'的排序版本。將其擴展到2D數組,您可以使用列表選擇一堆行或(在本例中)列。你想按照'i'指定的順序來處理列,但是你想要所有的行都不變,因此':'(這是一個覆蓋所有行的切片)。你應該在numpy中找到關於切片和索引的教程,因爲它是非常重要的東西。 – pezcode