我正在尝试以下列方式初始化numpy数组列表
import numpy as np
sol=[np.zeros(5)]*4
但是当我尝试修改其中一个列表成员时,
sol[0][2:4]=[1,1]
它会更改所有列表成员而不是仅更改第一个
[array([ 0., 0., 1., 1., 0.]), array([ 0., 0., 1., 1., 0.]), array([ 0., 0., 1., 1., 0.]), array([ 0., 0., 1., 1., 0.])]
我想这是关于可变和不可变对象的老故事,但我根本不知道如何解决它。
我尝试过使用复制和深度复制,但没有成功。
很抱歉,如果它是重复的条目,但我找不到任何类似的问题
由于
答案 0 :(得分:1)
答案是:
np.zeros((4, 5))
并解释有关可变对象的观点。当你这样做时:
[np.zeros(5)] * 4
它在功能上等同于:
a = np.zeros(5)
[a, a, a, a]