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

如何对存储二维数组坐标的嵌套列表进行lexicographically排序

字典序坐标排序实现方法

关于np.lexsort返回值的说明

np.lexsort的设计逻辑是接收排序键序列,排序优先级从最后一个传入的键到第一个传入的键依次升高,最终返回的是排序后元素对应原数组的索引数组,而非排序后的原数据。
你调用np.lexsort([[4,3],[4,5]])得到的返回值是array([0, 1]),这个结果本身符合你的排序预期:索引0对应的原元素[4,3]排在首位,索引1对应的[4,5]排在次位,只是你需要用返回的索引去原数组取对应值才能得到排序后的结果。

两种实现方案

纯Python实现(无numpy依赖)

Python内置的列表排序、取最值逻辑本身默认就是字典序,直接调用即可:

a = [[4,3],[4,5]]
# 直接取字典序最小的坐标
min_coord = min(a)
# 输出结果:[4, 3]

# 如果需要对全量坐标排序
sorted_coords = sorted(a)

numpy实现

如果数据本身是numpy数组,可以按如下方式调用np.lexsort:

import numpy as np

a = np.array([[4,3],[4,5]])
# 排序优先级:先比较行(第一列)、行相同再比较列(第二列)
# 注意lexsort优先级倒序,所以传参顺序为(列数组, 行数组)
sorted_idx = np.lexsort((a[:,1], a[:,0]))
# 按索引取排序后的数组
sorted_coords = a[sorted_idx]
# 取最小坐标
min_coord = sorted_coords[0]
# 输出结果:array([4, 3])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:18:01