创建一个不会影响旧数组的新的相同numpy数组

时间:2017-10-30 11:34:11

标签: python arrays numpy

在我们进入细节之前,我已经在网站上搜索过任何类似的问题,但其中大部分都不适合我。

这是我尝试做的事情:

my_array = np.zeros([5,5])

for i in range(4):
    temp = my_array[:]
    temp +=1

所以我需要在my_array上进行尝试和错误而不更改它。这是一个简化版本,只有一些关键点。但我做的试验改变了my_array和temp。

到目前为止,此网站上的解决方案都使用了[:]或.copy。我尝试了两种方法,但它仍然会影响my_array。

感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

您需要执行深度复制

import copy

temp = copy.deepcopy(my_array)

在此之后,对temp的任何更改都不会反映在my_array

应该这样做。

答案 1 :(得分:0)

copy有效:

my_array = np.zeros([5,5])

for i in range(4):
    temp = my_array.copy()
    temp +=1

print(temp)
#[[ 1.  1.  1.  1.  1.]
# [ 1.  1.  1.  1.  1.]
# [ 1.  1.  1.  1.  1.]
# [ 1.  1.  1.  1.  1.]
# [ 1.  1.  1.  1.  1.]]

print(my_array)
#[[ 0.  0.  0.  0.  0.]
# [ 0.  0.  0.  0.  0.]
# [ 0.  0.  0.  0.  0.]
# [ 0.  0.  0.  0.  0.]
# [ 0.  0.  0.  0.  0.]]