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

如何高效基于另一数组替换Numpy数组中的对应元素?

高效实现Numpy元素替换方案

可以通过构建映射字典的方式实现,完全避免循环查找索引,效率远高于np.where循环的方案,具体步骤如下:

  1. 基于第二个数组创建元素到其下一个元素的映射字典,利用数组切片和zip快速生成键值对
  2. 将第一个数组扁平化后通过字典完成批量映射,最后恢复原形状

代码示例

import numpy as np

# 定义输入数组
arr1 = np.array([['CLU20'], ['CLZ20'], ['CLH21']])
arr2 = np.array(['CLU20', 'CLZ20', 'CLH21', 'CLM21', 'CLU21', 'CLZ21', 'CLH22', 'CLM22', 'CLU22'])

# 构建元素到下一个元素的映射字典
next_map = dict(zip(arr2[:-1], arr2[1:]))

# 完成替换:扁平化arr1 -> 字典映射 -> 恢复原形状
result = np.array([next_map[x] for x in arr1.flatten()]).reshape(arr1.shape)

print(result)

输出结果

[['CLZ20']
 ['CLH21']
 ['CLM21']]

优势说明

  • 字典的查找时间复杂度为O(1),相比循环调用np.where(每次查找O(n)),在数组规模较大时性能提升非常明显
  • 代码简洁直观,逻辑清晰,避免了繁琐的索引计算

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 13:33:06