Python中如何高效批量修改NumPy数组的指定索引元素?
高效修改NumPy数组指定索引元素的方法
当然有更高效的实现方式!NumPy的**花式索引(Fancy Indexing)**特性可以帮你一次性完成批量元素修改,不管是代码简洁度还是执行效率,都比逐个赋值要好很多。
实现代码
import numpy as np # 初始化数组 arr = np.ones(shape=10, dtype=np.int64) # 批量修改指定索引的元素 arr[[2, 3, 6, 7]] = [5, 5, 2, 2] print(arr)
输出结果
[1 1 5 5 1 1 2 2 1 1]
为什么这更高效?
- 相比逐个执行
arr[2] = 5、arr[3] = 5这类单元素赋值,批量索引赋值是矢量化操作,它把修改逻辑放到NumPy的底层C代码中执行,避免了Python层面的循环开销,在元素数量较多时速度优势会非常明显。 - 代码更简洁,一眼就能看出哪些索引的元素被修改成了什么值,可读性更强。
需要注意的是,索引列表和值列表的长度必须匹配,否则NumPy会触发广播机制(如果符合广播规则)或者直接报错,这里你的索引和值数量都是4,刚好完美匹配,所以直接用这种方式就没问题。
内容的提问来源于stack exchange,提问作者ZR-
相关产品推荐
相关产品推荐

