使用場景:
- 對指定行或列排序
- 先對某列排序;若有相等值,再根據相等值所在行(或列)排序;若還有想等值,一直往前遞推
下面為幾組數據介紹,可以理理思路
""" 1. 對指定行排序時 相同行中有相同的數時,參照相同數的上一行的大小 2. 若還相等,繼續遞進 """ #arr2為自己設計的數據 arr2 = np.array([[1, 2, 1, 3], [4, 3, 3, 1], [4, 5, 6, 7]]) print("原數組為:\n", arr2) #指定了arr2從第2行(此行對應索引號為1)排序,若有相等值,繼續在相等值所在上一行比較,往前一直遞推到第一行完結束 ind2 = np.lexsort(arr2[0:2, :]) print('\n排序后對應的索引為:', ind2, '\n') #兩種還原數組的方法 A = arr2.T[ind2].T B = arr2[:, ind2] print("按要求排序后數組為:") print("A:\n", A) print("B:\n", B) print('*'*30) """ 1. 對指定列排序時 相同列中有相同的數時,參照相同數的上一列的大小 2. 若還相等,繼續遞進 """ #arr3為自己設計的數據 arr3 = np.array([[50, 50, 90], [90, 75, 80], [60, 70, 80], [85, 75, 80]]) print("原數組為:\n", arr3, '\n') #1. 對arr3是按最后一列數值大小排序 排序后若最后一列相等,則在相等值對應的上一列再次比較,排序 若還有相等,往前遞進 #2. 將 對列數值大小排序 轉變到 默認為對行數值大小排序(arr3.T) #3. 返回排序后行每一元素所在列的索引 ind3 = np.lexsort(arr3.T) print("排序后對應的索引為:", ind3, '\n') #兩種還原數組的方法 print("按要求排序后數組為:") #根據行索引,列索引顯示 print("A:\n", arr3[ind3, :]) print("B:\n", arr3[ind3, :]) print('*'*30) #指定了arr3從最后一列排序,若有相等值,繼續在相等值所在上一列比較,往前一直遞推到第2列(此列對應索引號為1)結束 ind4 = np.lexsort(arr3.T[1:, :]) print("\n排序后對應的索引為:", ind4, '\n') print("按要求排序后數組為:") print(arr3[ind4, :])
來源
https://blog.csdn.net/zyripe/article/details/105152987