如何将变量的值与父变量的可能变化解除链接?

时间:2019-07-02 19:45:44

标签: python

我需要在更改父变量时不更改某些变量的值。

import numpy as np
# Defining the parent variable
A = np.zeros((5,5)) 
print(A)
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.]])
# Asing values a the new variable
B = A[:2,:2]
print (B)
array([[0., 0.],
       [0., 0.]])
# Change the parent variable
A[:,1] = 1
print(A)
array([[0., 1., 0., 0., 0.],
       [0., 1., 0., 0., 0.],
       [0., 1., 0., 0., 0.],
       [0., 1., 0., 0., 0.],
       [0., 1., 0., 0., 0.]])
# The variable values change whit the parent variable
print(B)
array([[0., 1.],
       [0., 1.]])

我希望B的值没有变化,但是这种变化表明与A值有一些联系。我如何避免这种链接?

2 个答案:

答案 0 :(得分:1)

使用copy在内存中复制阵列。

答案 1 :(得分:1)

正如J. Blackadar使用.copy()所说的,它将是您的朋友。

通过使用复制,您正在内存中创建另一个分配,而不是使用两个变量指向同一位置。

不使用.copy():

a = 5 
b= a
b = b-2
print(a) - > 3

使用.copy():

a = 5 
b= a.copy()
b = b-2
print(a) - > 5