Python if语句上的条件变量正在被该语句更改,即使它没有';不要出现在声明中。为什么?
我想创建两个矩阵。然后根据第一个矩阵中的数字更改第二个矩阵的数字。所以我生成一个关于我的第一个矩阵的If语句,如果为真,这将导致我的第二个矩阵发生变化。但是,它会导致两个矩阵的变化 我的代码可以完美地处理一位数的对象。只有当我尝试将其应用于矩阵时才会发生Python if语句上的条件变量正在被该语句更改,即使它没有';不要出现在声明中。为什么?,python,numpy,atom-editor,Python,Numpy,Atom Editor,我想创建两个矩阵。然后根据第一个矩阵中的数字更改第二个矩阵的数字。所以我生成一个关于我的第一个矩阵的If语句,如果为真,这将导致我的第二个矩阵发生变化。但是,它会导致两个矩阵的变化 我的代码可以完美地处理一位数的对象。只有当我尝试将其应用于矩阵时才会发生 import numpy as np n = 3 matr = np.zeros((n,n)) matr[0][0] = 1 matr2 = matr print(matr) [[1. 0. 0.] [0. 0. 0.] [0. 0. 0
import numpy as np
n = 3
matr = np.zeros((n,n))
matr[0][0] = 1
matr2 = matr
print(matr)
[[1. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]
print(matr2)
[[1. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]
if matr[0][0] == 1:
matr2[0][0] = 9
print(matr)
[[9. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]
print(matr2)
[[9. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]
因为“matr”在我的if语句中不作为主语出现,所以它不应该被改变,对吗
x = 1
y = x
if x == 1:
y = 9
print(x)
1
print(y)
9
这两个变量只是对同一个矩阵的两个引用,而不是两个不同的矩阵
matr2=matr
只是创建了对同一矩阵的新引用
语句
matr2[0][0]=9
修改了示例中唯一存在的矩阵,它与使用matr[0][0]=9
完全相同。这两个变量只是对相同数据的两个引用,而不是两个不同的矩阵。您应该在NumPy中查看视图和副本。