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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 05:30:43