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

如何对(N,2)型NumPy数组每行元素交换,使较大值在前

处理(N,2) NumPy数组:每行元素降序排列(大值在前)

假设我们有如下形状为(N,2)的NumPy数组:

import numpy as np

arr = np.array([
    [3,5],
    [4,2],
    [1,6],
    [5,4]
])

要实现每行较大元素排在首位的需求,有两种简洁高效的向量化实现方式:

方法一:排序后翻转每行

利用np.sort对每行升序排序,再通过切片翻转得到降序排列:

result = np.sort(arr, axis=1)[:, ::-1]

执行后result的结果为:

array([[5, 3],
       [4, 2],
       [6, 1],
       [5, 4]])

方法二:拼接每行的最大值与最小值

直接提取每行的最大值和最小值,按列拼接成新数组:

max_vals = np.max(arr, axis=1, keepdims=True)
min_vals = np.min(arr, axis=1, keepdims=True)
result = np.concatenate([max_vals, min_vals], axis=1)

该方法同样能得到与方法一完全一致的结果,且逻辑更直观。

两种方法均为NumPy原生向量化操作,无需循环,处理大规模数组时效率优异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 21:45:36