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

如何仅修改字典中指定键对应NumPy数组的指定行?

问题原因

你遇到的问题核心是引用复用:用itertools.repeat(np.zeros((5, 2)))时,并没有生成4个独立的5×2数组,而是把同一个numpy数组对象的引用重复了4次。字典里所有键指向的都是同一个数组,所以修改键20对应的数组行,其他键的数组也会同步变化。

解决方案

要让每个键对应独立的数组,需要每次调用np.zeros((5, 2))生成新的数组对象,推荐用以下两种方式:

方式一:字典推导式(最简洁)

import numpy as np
my_dict = {key: np.zeros((5, 2)) for key in [10, 20, 30, 40]}
my_dict[20][1] = [2, -4]
print(my_dict)

方式二:手动生成独立数组序列

import numpy as np
keys = [10, 20, 30, 40]
# 用列表推导式生成4个独立的数组
arrays = [np.zeros((5, 2)) for _ in keys]
my_dict = dict(zip(keys, arrays))
my_dict[20][1] = [2, -4]
print(my_dict)
原理说明

列表推导式里每次执行np.zeros((5, 2))都会创建一个全新的numpy数组对象,每个键对应的数组都是独立的内存空间,修改其中一个不会影响其他数组的内容。

内容的提问来源于stack exchange,提问作者andrerud

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 17:42:00