python中没有传值和传引用的概念,但copy和view有类似的作用。
-
View
view相当于传引用,view和原始数据共享一份数据,修改一个会影响另一个。
slice,array.view(dtype)可以产生view,但array.astype(dtype)产生的不是viewx = np.arange(5) print('x = :\n', x) view = x[1:3] view[1] = 6 print('x = :\n', x) # Prints [0 1 -1 3 4]
输出
[0,1,2,3,4] [0,1,6,3,4]
-
Copy
和slice很像的fancy index (用array作索引,包括bool数组)返回的是copyx = np.arange(5) print('x = :\n', x) copy = x[[1,2]] copy[1] = 6 print('x = :\n', x) # Prints [0 1 -1 3 4]
输出
[0,1,2,3,4] [0,1,2,3,4]