在Python中复制一个数组

5

我正在尝试在Python中复制一个numpy数组。然后,我想改变一些新数组的值,但是某种方式这也会改变原始数组?

为什么以下代码不正确?

import numpy as np

a = np.array([1,1])
print("Array a:",a)

b = a
b[0] = a[0]*2
print("Array b after manipulation:", b)

print("Array a, after manipulating array b", a)

我唯一让它运转的方式是使用列表推导式。
import numpy as np

a = np.array([1,1])
print("Array a:",a)

b = [x for x in a]
b[0] = a[0]*2
print("Array b after manipulation:", b)

print("Array a, after manipulating array b", a)
1个回答

6
在 Python 中,赋值语句不会复制对象,你需要使用 copy() 方法:
b = a.copy()

谢谢您(快速的!)回答。您能解释一下为什么吗?我认为第一个解决方案非常直观。是因为我使用了Numpy数组而不是列表吗? - Mathias
它只在第一层起作用,如果你复制一个数组的数组,它就不起作用了。 - lolesque

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接