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

如何使用Numpy将数组重复元素替换为其首次出现的索引

Numpy实现获取数组元素首次出现索引的方法

核心实现思路

利用np.unique的内置参数直接获取首次出现位置和反向映射关系,全程为向量化操作,效率远高于Python原生循环方案。

代码示例

import numpy as np

# 输入数组
x = np.array([1, 2, 3, 3, 2, 4])
# 自定义索引数组,如果是默认0到n-1的索引可省略直接用first_idx
I = np.array([0, 1, 2, 3, 4, 5])

# 参数说明:
# return_index:返回每个唯一元素在原数组中第一次出现的下标
# return_inverse:返回原数组每个元素对应到唯一值数组的下标映射
_, first_idx, inverse_map = np.unique(x, return_index=True, return_inverse=True)

# 生成结果:用映射下标取对应首次出现的索引
y = I[first_idx][inverse_map]

print(y)
# 输出:[0 1 2 2 1 5]

方案优势

  • 无需手动遍历数组,完全依赖Numpy底层C实现的运算,处理十万级以上数组时速度是Python字典遍历方案的10~100倍
  • 代码简洁易读,仅需2行核心逻辑即可完成需求
  • 支持自定义索引数组,适配非连续索引的特殊场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:54:03