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

在NumPy中获取两个等长整数向量唯一元素对的最简方法?

在NumPy中获取唯一元素对的简洁方法

可以通过以下步骤实现,核心利用np.unique的多维度去重能力:

  1. 将两个向量按列堆叠成二维数组,每一行代表一个元素对
  2. 使用np.unique对二维数组去重,同时保留元素对的首次出现顺序
  3. 拆分去重后的二维数组,得到对应的两个结果向量

代码实现

import numpy as np

a0 = np.asarray([0, 1, 4, 1, 0, 4])
a1 = np.asarray([0, 2, 3, 2, 0, 2])

# 堆叠成二维数组,每一行对应一组(a0[i], a1[i])元素对
pairs = np.column_stack((a0, a1))
# 按行去重,返回去重后的数组及原数组中首次出现的索引
unique_pairs, indices = np.unique(pairs, axis=0, return_index=True)
# 对索引排序,保证结果顺序与元素对首次出现的顺序一致
sorted_indices = np.sort(indices)
# 从原数组中提取对应元素得到结果
b0 = a0[sorted_indices]
b1 = a1[sorted_indices]

print(b0)  # 输出: [0 1 4 4]
print(b1)  # 输出: [0 2 3 2]

关键说明

  • np.column_stack((a0, a1)):将两个一维向量合并为二维数组,把每一组对应元素转化为数组的一行
  • np.unique(..., axis=0, return_index=True):指定axis=0实现按行(即元素对)去重,return_index=True会返回去重后元素在原数组中的首次出现位置索引
  • 对索引排序是因为np.unique返回的索引默认是按元素值排序后的位置,排序后才能还原元素对在原数组中首次出现的顺序

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.02 00:04:50