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

如何在Python中按第一列(x1值)对foundFaces数组进行排序?

按人脸x1坐标排序数组的简便方法

不用自己写循环实现排序,Python针对数组/列表排序有现成的高效方法,分两种场景说明:

场景1:你的foundFaces是NumPy数组

从你提供的输出格式来看,这大概率是NumPy数组,用NumPy内置的排序工具就能快速解决:

import numpy as np

# 示例数组
foundFaces = np.array([
    [414.7081, 92.99516, 482.82443, 177.7601, 0.9049758],
    [278.0241, 96.27542, 344.90128, 186.57086, 0.88056326],
    [542.65515, 69.08964, 609.4397, 162.48027, 0.88008916]
])

# 按第一列(x1值)升序排序(对应从左到右的顺序)
sorted_faces = foundFaces[foundFaces[:, 0].argsort()]

print(sorted_faces)
  • foundFaces[:, 0]:提取数组的第一列(所有行的第0个元素,即x1值)
  • .argsort():返回第一列元素排序后的索引位置
  • 用这些索引重新索引原数组,就得到按x1从左到右排序后的结果

场景2:你的foundFaces是普通Python列表

如果是原生列表结构,用内置的sorted()函数配合key参数即可:

# 示例列表
foundFaces = [
    [414.7081, 92.99516, 482.82443, 177.7601, 0.9049758],
    [278.0241, 96.27542, 344.90128, 186.57086, 0.88056326],
    [542.65515, 69.08964, 609.4397, 162.48027, 0.88008916]
]

# 按每个子列表的第一个元素(x1)升序排序
sorted_faces = sorted(foundFaces, key=lambda x: x[0])

print(sorted_faces)
  • key=lambda x: x[0]:指定排序依据为每个子列表的第0个元素(x1值)
  • sorted()默认是升序排序,正好符合从左到右的需求

这两种方法都比手动循环实现的排序更高效、更简洁,尤其是NumPy方法在处理大规模数据时性能优势明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:48:45