Python字典存入numpy数组时旧元素自动被覆盖的问题是什么原因?
问题原因
- NumPy数组属于可变对象,Python中对可变对象的直接赋值默认传递的是内存引用,而非独立的数据副本。
- 你的代码里所有字典条目都指向同一个
arr_run数组的内存地址,只要原数组被修改,所有引用该地址的字典值都会同步更新,自然无法保留历史状态。
修复方法
存到字典时主动创建数组的独立拷贝,调用NumPy数组自带的copy()方法即可,修改赋值语句为:
d['bump'+str(i)] = arr_run.copy()
修改后完整代码
import numpy as np d = dict() arr_run = np.zeros([10,5]) for i in range(10): arr = np.random.randn(10-i,5) arr_run[i:,:] = arr d['bump'+str(i)] = arr_run.copy()
内容的提问来源于stack exchange,提问作者RealRageDontQuit
相关产品推荐
相关产品推荐

