如何基于索引列表用另一数组为numpy/tensorflow数组赋值?
NumPy 批量索引赋值替代for循环方案
直接用NumPy的数组索引赋值就能替代for循环,这是NumPy原生优化的向量操作,比Python循环高效得多,完全适配批量数据处理场景:
import numpy as np # 初始化数组 a = np.zeros(24) b = np.ones(10) c = [0, 2, 4, 6, 8, 11, 15, 17, 20, 22] # 核心操作:直接通过索引列表赋值 a[c] = b # 验证结果 print(a.tolist()) # 输出:[1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]
原理说明
NumPy支持直接将列表/数组作为索引,对目标数组的指定位置批量赋值。这种操作是在C语言层面执行的,避免了Python循环的开销,处理百万级以上的批量数据时性能提升非常明显。
如果需要处理多组批量数据(比如多个b和对应的c索引组),可以将b和c组织成二维数组,利用NumPy的广播机制实现一次性批量处理,进一步提升效率。
内容的提问来源于stack exchange,提问作者Salah Uddin
相关产品推荐
相关产品推荐

