Python数组无理由地更改值

时间:2016-09-29 17:33:13

标签: python pycharm

在下面的代码中,我没有理由看到为什么变量“cleary”会改变值,但确实如此。我已多次重启pyCharm,但它一直在发生。

import numpy as np

nPeriods = 48
nGens = 1
cleary = np.zeros((nPeriods,nGens,2))
clearz = np.zeros((nPeriods,nGens))

for ii in range(nPeriods):
    for jj in range(nGens):
        temp = cleary
        temp[ii,jj,:] = 1

我做错了什么?

1 个答案:

答案 0 :(得分:1)

这是预期的行为。当你这样做时,你传递了名称cleary指向temp的ndarray对象的引用:

temp = cleary

您可以通过将数组的副本分配给cleary来避免修改temp

temp = cleary.copy()

阅读How do I pass a variable by reference?以了解有关Python中名称分配基础的更多信息。