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

按指定匹配规则重排numpy数组并合并的实现方法

实现方案

步骤说明

  1. 提取array1的第二列作为排序参照标准;
  2. 建立array2第一列值与行索引的映射关系;
  3. 根据参照标准的顺序,获取对应的array2行索引,完成排序;
  4. 将排序后的array2的第二列与array1水平合并,得到最终数组。

代码实现

import numpy as np

# 定义原始数组
array1 = np.array(
        [[1, 2],
         [2, 1],
         [3, 3]])

array2 = np.array(
        [[2, 3],
         [3, 2],
         [1, 1]])

# 1. 获取array1的第二列作为排序参照序列
ref_sequence = array1[:, 1]

# 2. 构建array2第一列值到行索引的映射
val_index_map = {val: idx for idx, val in enumerate(array2[:, 0])}

# 3. 根据参照序列生成排序索引,对array2排序
sorted_indices = [val_index_map[val] for val in ref_sequence]
sorted_array2 = array2[sorted_indices]

# 4. 合并array1与排序后array2的第二列
final_array = np.hstack((array1, sorted_array2[:, 1:]))

# 输出结果
print("排序后的array2:")
print(sorted_array2)
print("\n最终合并数组:")
print(final_array)

代码解释

  • ref_sequence = array1[:, 1]:提取array1第二列,得到[2, 1, 3],这是我们需要的匹配顺序;
  • val_index_map:将array2第一列的每个值与其所在行的索引绑定,比如2对应行索引0,1对应行索引2;
  • sorted_indices:根据参照序列的每个值,从映射字典中取出对应的行索引,得到[0, 2, 1],用这个索引数组筛选array2的行,即可得到目标排序结果;
  • np.hstack:将array1与排序后array2的第二列水平拼接,生成最终的3列数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 04:43:28