Python 在y=x之后,x的值不应该改变,但是为什么在这个脚本中x会改变呢?

Python 在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所做的任何更改都将应用于相同的数据 您可以复制数

运行此脚本后,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
所做的任何更改都将应用于相同的数据


您可以复制数组以获得不同的数组:
y=x.copy()

当您在python中使用非原语类型执行
y=x
时,
x
y
是相同对象的别名,因此也会更新
y
更改
x
。在python中,赋值语句不会复制对象,它们在目标和对象之间创建链接。您需要将
y
设置为
x
的副本,它们是更精确的引用。