当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python NumPy lexsort方法用法及代码示例


Numpy 的 lexsort(~) 方法返回与列数据对应的多个输入数组的排序整数索引。请参阅下面的示例以进行说明。

参数

1.keys | array_likesequences

您想要排序的键。

2. axis | int | optional

对输入数组进行排序的轴。对于二维数组,允许的值如下:

意义

None

展平数组并对其进行排序

0

按列排序

1

按行排序

默认情况下,axis=-1 表示仅在最后一个轴上进行排序。对于二维数组,这意味着默认排序行为是按行排序。

返回值

一个 Numpy 数组,保存已排序列的整数索引。

例子

假设我们有以下关于 3 个人的数据:

Bob

Marley

Alex

Davis

Cathy

Watson

在代码中,这将转换为以下内容:

first_names = np.array(["Bob", "Alex", "Cathy"])
last_names = np.array(["Marley", "Davis", "Watson"])

这里重要的是我们的数据按列分割 - 我们没有一个数组来容纳所有数据。

按单列排序

要按单列排序,请说出名字:

first_names = np.array(["Bob", "Alex", "Cathy"])
last_names = np.array(["Marley", "Davis", "Watson"])
sorted_indices = np.lexsort([first_names])
sorted_indices



array([1, 0, 2])

这里返回的是排序数据的索引列表 - ["Alex Davis", "Bob Marley", "Cathy Watson"] 的原始索引分别为 1、0 和 2。

查看排序后的数据:

for i in sorted_indices:
 print(first_names[i] + " " + last_names[i])



Alex Davis
Bob Marley
Cathy Watson

按多列排序

要按多列排序:

first_names = np.array(["Bob", "Alex", "Alex"])
last_names = np.array(["Marley", "Davis", "Beck"])
sorted_indices = np.lexsort([first_names, last_names])
sorted_indices



array([2, 1, 0])

在这里,我们的第一个键(即 first_names)有重复的值,因此对于这些值,它们按姓氏排序 - 这就是 Alex Beck 排在 Alex Davis 之前的原因。

查看排序后的数据:

for i in sorted_indices:
 print(first_names[i] + " " + last_names[i])



Alex Beck
Alex Davis
Bob Marley

相关用法


注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 NumPy | lexsort method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。