You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

np.lexsort排序逻辑解析及代码输出[1 2 0]疑问解答

理解numpy.lexsort的排序逻辑

我来帮你捋清楚这个困惑!你没搞懂的核心点在于np.lexsort的参数优先级顺序——它是从右往左使用传入的数组作为排序键的,也就是说:

  • 传入的元组里,最右边的数组是第一排序键(主键)
  • 往左依次是第二、第三排序键,只有当主键的值相同时,才会用左边的次键来进一步排序

结合你的代码具体分析:

import numpy as np
first_names = (5,5,5)
last_names = (3,1,2)
x = np.lexsort((first_names, last_names))
print(x)  # 输出 [1 2 0]

这里你传入的排序键元组是(first_names, last_names),所以:

  1. 第一排序键是last_names(元组最右侧的元素)
  2. 第二排序键是first_names,但因为first_names的所有值都是5,完全相同,所以这个键根本不会影响排序结果

现在看last_names的具体值和对应索引:

  • 索引0对应值3
  • 索引1对应值1
  • 索引2对应值2

np.lexsort默认是升序排序,所以对last_names的值从小到大排序后,对应的索引顺序就是:
值1(索引1)→ 值2(索引2)→ 值3(索引0),也就是[1,2,0],这就是你看到的输出啦!

再给你个小例子巩固下,如果first_names有不同的值,比如first_names = (5,6,5),那当last_names的值相同时(假设有的话),就会用first_names来排序。

内容的提问来源于stack exchange,提问作者George

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:28:31