我想按另一個數組的值排序一個數組的行。例如:用Python中的另一個數組排序數組的行
import numpy as np
arr1 = np.random.normal(1, 1, 80)
arr2 = np.random.normal(1,1, (80,100))
欲降序ARR1排序,並且具有ARR1和ARR2之間的電流關係被保持(即,分選兩者之後,的arr1[0]
和arr2[0, :]
行是相同的)。
我想按另一個數組的值排序一個數組的行。例如:用Python中的另一個數組排序數組的行
import numpy as np
arr1 = np.random.normal(1, 1, 80)
arr2 = np.random.normal(1,1, (80,100))
欲降序ARR1排序,並且具有ARR1和ARR2之間的電流關係被保持(即,分選兩者之後,的arr1[0]
和arr2[0, :]
行是相同的)。
使用argsort
如下:
arr1inds = arr1.argsort()
sorted_arr1 = arr1[arr1inds[::-1]]
sorted_arr2 = arr2[arr1inds[::-1]]
它降序排列。
使用zip功能:zip(*sorted(zip(arr1, arr2)))
這將做你所需要的。
現在解釋: zip(arr1, arr2)
將結合這兩個列表,所以你得到了[(0,[... list 0 ...]),(1,[... list 1 ...] ),...] 接下來我們運行sorted(...)
,它默認根據元組中的第一個字段進行排序。 然後,我們再次運行,它從元組中排序,並根據元組中的第一個元素(來自arr1)和第二個元素(來自arr2)創建兩個列表。