python中变量做法的问题是什么?

时间:2015-01-01 18:02:11

标签: python arrays numpy matrix

我在python中有这个问题。我有一个功能,它采取以下输入

import numpy;
from numpy import *;
def GetInf(G, X, m, n):
    g           = G[m - 1, :].T;
    Y           = X;
    Y[m - 1, :] = 0;
    Y[:, n - 1] = 0;
    # Here I modify Y. The problem is that X is modified too. Why?
    # In fact, I add Y after I see that X is changing but X keeps changing.
    result      =  sum(Y * G);
    return result;

G = array([[1., 2., 3.], [4., 5., 6.]]);
X = array([[1., 0., 0.], [0., 0., 1.]]);
I = GetInf(G, X, 1, 1);

我的问题是,当我调试程序时,我发现在修改Y之后,X也被修改了。我不明白为什么。

1 个答案:

答案 0 :(得分:1)

因为您将X分配给Y。这意味着Y是对X所指的位置的引用!如果你不想要,你必须复制X

Y=np.copy(X)