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

Python NumPy中如何按数组排序结果同步调整另一对应数组顺序

实现方法

不要单独用np.sort对A排序,np.sort仅返回排序后的数值,不会保留元素原位置的映射关系。要生成和A排序顺序完全匹配的B1,核心逻辑如下:

  • 用np.argsort获取A沿axis=1排序时的元素原位置索引
  • 用这个索引对B做同轴向的取值,就能得到顺序完全对齐的B1
    推荐用np.take_along_axis做索引取值,会自动处理维度匹配问题,不需要手动写广播逻辑。
可运行代码
import numpy as np
A = np.array([[[0, 1],[0, 2],[1, 3],[2, 3],[2, 5],[3, 4],[3, 6],[4, 7],[5, 6],[6, 7]]])
B = np.array([[[10],[20],[30],[40],[50],[60],[70],[80],[90],[100]]])

# 获取沿axis=1排序的位置索引
sort_indices = np.argsort(A, axis=1)
# 沿相同轴取A、B的对应元素,因为B最后一维长度为1,索引最后一维切1个长度匹配维度即可
A1 = np.take_along_axis(A, sort_indices, axis=1)
B1 = np.take_along_axis(B, sort_indices[..., :1], axis=1)
结果验证

运行代码后得到的B1和期望输出完全一致:

>>> print(B1)
array([[[ 10],
        [ 20],
        [ 30],
        [ 40],
        [ 60],
        [ 50],
        [ 70],
        [ 90],
        [ 80],
        [100]]])

这个方法对任意维度的同形状对齐数组都通用,只要修改axis参数为你需要排序的轴,调整索引切片匹配数组最后一维长度即可,不需要写循环处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 07:15:31