NumPy lexsort() 函数使用键序列执行间接稳定排序。
当提供多个排序键时,可以对其进行解释作为列,lexsort() 返回一个整数索引数组,用于描述多列的排序顺序。序列中的最后一个键用于主要排序顺序,倒数第二个键用于辅助排序顺序,依此类推。键参数必须是可以转换为相同形状的数组的对象序列。如果为keys参数提供了二维数组,则其行将被解释为排序键,并且根据最后一行、倒数第二行等进行排序。
语法
numpy.lexsort(keys, axis=-1)
参数
keys | 必需。 指定要排序的 k 个不同的"列"。最后一列(如果键是二维数组则为最后一行)是主排序键。 |
axis | 可选。 指定要间接排序的轴。默认情况下,对最后一个轴进行排序。 |
返回值
返回沿指定轴对键进行排序的索引数组.
示例:
在下面的示例中,lexsort() 函数用于先按 x 列排序,然后按y 列。
import numpy as np
#x 列 - 第一列
x = np.array([10, 20, 10, 20, 10, 25, 10])
#y 列 - 第二列
y = np.array([40, 10, 45, 60, 50, 25, 30])
#获取排序的索引数组
#x 列第一,y 列第二
indices = np.lexsort((y, x))
#显示索引
print("用于对列进行排序的索引数组")
print(indices)
#使用索引对列进行排序
print("\n已排序的 x 和 y 列:")
for i in indices:
print(x[i], y[i])
上述代码的输出将是:
用于对列进行排序的索引数组
[6 0 2 4 1 3 5]
已排序的 x 和 y 列:
10 30
10 40
10 45
10 50
20 10
20 60
25 25