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

如何通过索引映射矢量化转换ndarray?提升大数组处理效率

矢量化实现ndarray的索引映射转换

针对你提出的索引映射需求,完全可以用NumPy的矢量化操作替代列表推导式,彻底解决大型数组的性能问题,具体实现如下:

步骤1:构建索引矩阵

先生成和目标数组同形状的行、列索引:

import numpy as np

x = np.arange(3*4).reshape((3,4))
# 生成行索引:每行对应原数组的行号,扩展为(3,4)的二维数组
row_indices = np.arange(x.shape[0])[:, np.newaxis]
# 生成列索引:遵循1+i-2j的规则(i为行号,j为列号)
col_indices = 1 + row_indices - 2 * np.arange(x.shape[1])

步骤2:标记合法索引

创建布尔掩码,筛选出在原数组列范围内的索引:

valid_mask = (col_indices >= 0) & (col_indices < x.shape[1])

步骤3:填充目标数组

初始化全0数组,再用合法索引从原数组取值填充:

wanted = np.zeros_like(x)
wanted[valid_mask] = x[row_indices[valid_mask], col_indices[valid_mask]]

验证结果:

print(wanted)
# 输出:
# [[ 1  0  0  0]
#  [ 6  4  0  0]
#  [11  9  0  0]]

性能说明

这种矢量化方案完全依赖NumPy的底层C实现,没有Python层面的循环开销,处理大型数组时,性能比列表推导式提升几个数量级,非常适合大规模数据处理场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 07:10:31