Numpy数组双索引赋值无效问题求助
NumPy连续索引赋值不生效的原因及修复方案
你的代码里raw[indice_set1][indice_set2] = 10之所以没修改原数组,核心原因是第一次索引操作返回的是原数组的副本而非视图。
当你执行raw[indice_set1]时,NumPy会创建一个包含指定元素的新数组(副本),后续对这个副本的赋值只会作用在临时数组上,不会同步回原数组raw。
修复方法
直接通过一次索引定位到目标元素,避免产生中间副本:
import numpy as np raw = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) indice_set1 = np.array([0, 2, 4]) indice_set2 = np.array([0, 1]) # 先从indice_set1中提取目标索引,再直接赋值给原数组 raw[indice_set1[indice_set2]] = 10 print(raw) # 输出: [10 1 10 3 4 5 6 7 8 9]
这样操作会直接修改原数组的对应位置,因为我们是通过原数组的索引直接定位元素,没有产生中间副本。
内容的提问来源于stack exchange,提问作者arapEST
相关产品推荐
相关产品推荐

