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

Python如何高效实现二维数组按索引映射替换一维数组值

大规模二维数组按索引映射的高效实现方案

针对你需要把二维数组A的每个元素作为索引,从一维数组B取值生成新二维数组C的需求,按效率优先级给出以下可直接落地的方案:

最高效方案:NumPy向量化索引(大规模数据首选)

当A的规模非常大时,NumPy底层C实现的向量化索引是性能最优的选择,完全没有Python层循环的性能开销,千万级元素规模也能在毫秒级完成计算。

  1. 首先安装NumPy(已安装可跳过):
    pip install numpy
    
  2. 实现代码:
    import numpy as np
    
    # 输入数据
    A = [[1, 1], [2, 3]]
    B = [0.1, 0.2, 0.8, 0.9]
    
    # 批量索引映射,核心逻辑仅1行
    C = np.array(B)[np.array(A)].tolist()
    
    print(C) # 输出 [[0.2, 0.2], [0.8, 0.9]],完全匹配预期结果
    

注意:使用前请确认A内所有元素的取值都在B的合法索引范围内(即大于等于0,且小于B的长度),避免触发索引越界错误。

无依赖纯Python方案

如果运行环境无法安装NumPy,可以用双层列表推导实现,比显式写嵌套for循环+append的写法性能高30%左右:

A = [[1, 1], [2, 3]]
B = [0.1, 0.2, 0.8, 0.9]

C = [[B[idx] for idx in row] for row in A]

该方案仅适合十万级元素以内的小规模场景,数据量较大时性能和NumPy方案会有数十到上百倍的差距。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 07:15:33