我正在尝试测试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]。为什么?我认为切片也会修改原始数组。
答案 0 :(得分:2)
+
是一个函数,它返回一个新数组。通过运行y + 100
,您运行了一个函数,该函数返回一个指向新数组的指针,该数组存储在y
中。
如果您要运行y[0] = 5
,x
也会发生变化。
在编辑中添加:
+
是numpy.add(y, 100)
的隐式版本,向[100, 100, 100, 100, 100, 100]
广播100。然后它对两个数组求和,因此必须返回一个新数组。
此外,正如评论中所述,如果您希望更改x
,则可以使用映射到y += 100
的{{1}}。
答案 1 :(得分:1)
好吧,您可以使用NumPy切片的功能来反映原始数组中的值,例如
x = np.array([1,0,1,0,1,0])
y = x
y[:] = y + 100
x # will change
希望有帮助