详细介绍一下这个函数np.lexsort()并举实际例子
时间: 2024-09-30 16:12:38 浏览: 42
`numpy.lexsort()` 是 numpy 库中的一个函数,它主要用于对数组的行按照指定列进行排序。这个函数特别适合于处理多列有序数据,其返回的是一个从小到大排序后的索引数组,可以用于将原始数组按列排序。
该函数接受两个参数:
1. `keys`:这是一个一维或多维数组,表示排序的键。如果 `keys` 是一维数组,那么它会被看作是一列;如果是多维度,那么每一层都会被独立排序,最后的结果是所有列组合的升序排列。
2. `axis`:可选参数,默认为 -1,表示沿着数组的最后一个轴进行排序。其他非负整数值可以指定沿其他轴进行排序。
例如,假设我们有一个二维数组,包含了两列数据,分别是姓名和成绩:
```python
import numpy as np
data = np.array([['Tom', 85], ['Jerry', 90], ['Spike', 78], ['Tyke', 88]])
```
我们可以使用 `lexsort` 对这两列数据进行字母升序和数值降序的混合排序:
```python
# 指定按照姓名(字符串)和成绩(数值)进行排序
sorted_indices = np.lexsort((data[:, 1], data[:, 0]))
# 使用排序后的索引对原数组进行排序
sorted_data = data[sorted_indices]
print(sorted_data)
```
这会得到先按姓名排序,姓名相同的再按成绩降序排序的结果。输出可能是:
```
[['Spike', 78] ['Tyke', 88] ['Tom', 85] ['Jerry', 90]]
```
阅读全文