Python切片不会更改切片数组的值

时间:2018-01-18 14:04:39

标签: python numpy

我正在尝试测试Python numpy的切片功能。对于以下代码,我希望输出为[101,100,101,100,101,100]。

x = np.array([1,0,1,0,1,0])
y = x
y = y + 100
x

但它返回[1,0,1,0,1,0]。为什么?我认为切片也会修改原始数组。

2 个答案:

答案 0 :(得分:2)

+是一个函数,它返回一个新数组。通过运行y + 100,您运行了一个函数,该函数返回一个指向新数组的指针,该数组存储在y中。

如果您要运行y[0] = 5x也会发生变化。

在编辑中添加:

+numpy.add(y, 100)的隐式版本,向[100, 100, 100, 100, 100, 100]广播100。然后它对两个数组求和,因此必须返回一个新数组。

numpy.add doc

此外,正如评论中所述,如果您希望更改x,则可以使用映射到y += 100的{​​{1}}。

答案 1 :(得分:1)

好吧,您可以使用NumPy切片的功能来反映原始数组中的值,例如

x = np.array([1,0,1,0,1,0])
y = x
y[:] = y + 100
x  # will change

希望有帮助