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

如何通过二维索引数组对二维numpy数组的每一行进行排序?

用二维索引数组重排Numpy二维数组每一行的方法

你可以通过两种Numpy原生方法实现需求,代码示例如下:

首先完成数组初始化(修正了示例中遗漏的np.array括号和数组元素逗号):

import numpy as np

arr = np.array([[10, 30, 20],
                [30, 20, 10]])
indices = np.array([[2, 1, 0],
                    [2, 1, 0]])

方法1:使用np.take_along_axis(推荐)

这是Numpy 1.15.0版本之后新增的专用接口,代码最简洁不易出错:

result = np.take_along_axis(arr, indices, axis=1)

参数axis=1指定按行维度进行索引匹配。

方法2:使用高级广播索引

如果你的Numpy版本较低,可以手动构造行索引配对列索引实现:

# 构造与indices形状匹配的行索引,每一行值为对应行号
row_indices = np.arange(arr.shape[0])[:, np.newaxis]
result = arr[row_indices, indices]

两种方法得到的result输出都符合预期:

[[20 30 10]
 [10 20 30]]

内容的提问来源于stack exchange,提问作者Никита Михалков

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:09:00