按列排序,例如:输入:
[ [2,6],
[1,7],
[1,1], # n-lets possible
[2,1],
[1,4],
[1,1] ]
排序输出:
[ [1,1],
[1,1], # n-lets possible
[1,4],
[1,7],
[2,1],
[2,6] ]
最好是例如numpy 排序函数可提高速度。抱歉,这个简单的问题;找不到简单的解决方案。
您可以使用
numpy.lexsort
函数按多列对 NumPy 数组进行排序。在您的例子中,您有一个列表列表,因此您首先需要将其转换为 NumPy 数组。这是一个例子:
import numpy as np
# Your input list
input_list = [
[2, 6],
[1, 7],
[1, 1],
[2, 1],
[1, 4],
[1, 1]
]
# Convert the list to a NumPy array
array = np.array(input_list)
# Use lexsort to sort by multiple columns
sorted_indices = np.lexsort(array.T)
# Use the sorted indices to get the sorted array
sorted_array = array[sorted_indices]
# Convert the sorted array back to a list of lists
sorted_list = sorted_array.tolist()
print(sorted_list)
这将输出:
[[1, 1], [1, 1], [1, 4], [1, 7], [2, 1], [2, 6]]
这里,
np.lexsort(array.T)
首先根据第二列然后根据第一列对数组进行排序。结果是按两列排序的数组。