初始化numpy数组列表

时间:2014-07-07 16:02:58

标签: python arrays numpy

我正在尝试以下列方式初始化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.])]

我想这是关于可变和不可变对象的老故事,但我根本不知道如何解决它。

我尝试过使用复制和深度复制,但没有成功。

很抱歉,如果它是重复的条目,但我找不到任何类似的问题

由于

1 个答案:

答案 0 :(得分:1)

答案是:

np.zeros((4, 5))

并解释有关可变对象的观点。当你这样做时:

[np.zeros(5)] * 4

它在功能上等同于:

a = np.zeros(5)
[a, a, a, a]
相关问题