如何将numpy.ndarray中指定索引的元素替换为自定义值
在NumPy中替换二维数组指定索引位置的元素
你可以通过拆分索引数组的行和列维度,直接对目标数组的指定位置进行批量赋值,代码实现如下:
import numpy as np # 定义索引和初始数组 idx = np.array([[1, 0], [2, 1], [2, 3],]) array = np.array([[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]) # 拆分行索引和列索引,批量赋值 array[idx[:, 0], idx[:, 1]] = 1 print(array)
执行后输出结果就是你需要的:
[[0 0 0 0] [1 0 0 0] [0 1 0 1]]
原理说明
idx[:, 0]提取了所有索引的行号([1,2,2]),idx[:, 1]提取了对应的列号([0,1,3])。NumPy允许将行、列索引数组配对传入,直接定位到二维数组中的多个元素位置,然后一次性完成赋值操作。如果需要替换成其他值,只需要把代码中的1换成你想要的数值即可。
内容的提问来源于stack exchange,提问作者AMA
相关产品推荐
相关产品推荐

