NumPy 函数

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