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

如何将数组n1按数组r1的排序置换规则进行重排?

解决numpy数组排序后保持对应关系的问题

要让n1遵循r1的排序规则重排,核心是利用np.argsort()方法获取排序的索引映射,具体步骤如下:

  • 获取r1排序后的索引数组:indices = np.argsort(r1)
    • np.argsort()返回的是原数组元素排序后对应的原索引位置,比如原数组[3,1,2],argsort会返回[1,2,0],表示排序后的第一个元素来自原数组索引1,第二个来自索引2,第三个来自索引0。
  • 用该索引数组分别重排r1和n1:
    import numpy as np
    
    # 示例数组
    r1 = np.array([3, 1, 2])
    n1 = np.array([10, 20, 30])
    
    indices = np.argsort(r1)
    r2 = r1[indices]  # 等价于np.sort(r1),结果为[1,2,3]
    n2 = n1[indices]  # 结果为[20,30,10],保持与r2的对应关系
    
  • 验证:原r1中r1[0]=3对应n1[0]=10,排序后r2中r2[2]=3对应n2[2]=10,对应关系完全保留。

如果r1存在重复元素,np.argsort()依然能正确处理重复值的排序索引,保证n1的元素与r1排序后的元素一一对应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:25:39