Python 在y=x之后,x的值不应该改变,但是为什么在这个脚本中x会改变呢?
运行此脚本后,x和y都等于0,3.14,0,3.14,1.19,3.14,2.39,3.14,1,3.14,1Python 在y=x之后,x的值不应该改变,但是为什么在这个脚本中x会改变呢?,python,numpy,Python,Numpy,运行此脚本后,x和y都等于0,3.14,0,3.14,1.19,3.14,2.39,3.14,1,3.14,1 import numpy as np x = np.concatenate([np.zeros(2), np.arange(0, 3.6, 0.6), np.ones(3)]) y = x; y[1::2] = np.pi 变量x包含指向数组的指针 写入y=x时,只将指向数组的指针指定给y。因为两个变量都指向同一个数组,所以通过x或y所做的任何更改都将应用于相同的数据 您可以复制数
import numpy as np
x = np.concatenate([np.zeros(2), np.arange(0, 3.6, 0.6), np.ones(3)])
y = x;
y[1::2] = np.pi
变量
x
包含指向数组的指针
写入y=x
时,只将指向数组的指针指定给y
。因为两个变量都指向同一个数组,所以通过x
或y
所做的任何更改都将应用于相同的数据
您可以复制数组以获得不同的数组:
y=x.copy()
当您在python中使用非原语类型执行y=x
时,x
和y
是相同对象的别名,因此也会更新y
更改x
。在python中,赋值语句不会复制对象,它们在目标和对象之间创建链接。您需要将y
设置为x
的副本,它们是更精确的引用。