我有一个数组(称为图像),我想要循环并使用numpy.roll函数进行调整。我也想存储我即将调整的行的副本。这里是我的代码:Python,两个变量应该是不同的,但它们保持不变 - 是np.roll责备?
for i in range(1, 10):
delta = function(i) ### it's not important what this function is, just that it yields an int
x0 = image[i] ### creating a variable to store the row before I change it
print x0[:20] ###only printing the first 20 elements, as it's a very large array
image[i] = np.roll(x0, -delta)
print image[i][:20] ###image[i] has now been updated using np.roll function
if np.array_equal(image[i], x0) == True:
print 'something wrong'
现在是奇怪的事情发生在:当我运行这段代码,我可以看到,x0和图像[I]有很大的不同(如每头20元的打印到屏幕)。不过,我也在屏幕上打印出了“错误的东西”,这非常令人困惑,因为这实现了x0和image [i]是相等的。这是一个问题,因为我的脚本的其余部分依赖于x0和image [i]不相等(除非delta = 0),但脚本始终将它们视为它们。
帮助感谢!
,因为这个答案不包含任何解释,并创建这可能帮助你 –
Downvoting一个列表而不是一个数组。 – user2357112
嘿,你不能像列表一样将列表或数组列表复制到另一个变量中...因为列表或数组列表被视为对象,并且当您指定另一个变量时,它们只会成为对原始对象的引用,并且当您使用引用和询问其他引用的值,他们给出相同的值 –