为什么numpy用[:,:]创建引用,而用[:,[0,1,2,3,4,5]]创建新对象(副本)?

时间:2019-06-06 17:18:14

标签: numpy copy

我只想了解numpy中的复制机制。我知道.copy将创建一个副本,而不是原始数组的引用。

但是当我选择原始数组的一个切片并将其分配给新变量时,numpy会做什么。它会创建副本还是参考?

我尝试了以下操作,似乎选择一个切片实际上是在创建一个新对象。

a = np.array([[1,2,3,4,5],[1,1,1,1,1]])
c = a[:,:]
c[:,:] = 4
a
Out[13]: 
array([[4, 4, 4, 4, 4],
       [4, 4, 4, 4, 4]])


a = np.array([[1,2,3,4,5],[1,1,1,1,1]])
b = a[:,[0,1,2,3,4]]
b[:,:]=4
a
Out[14]: 
array([[1, 2, 3, 4, 5],
       [1, 1, 1, 1, 1]])

有人可以确认我的理解是否正确吗?

0 个答案:

没有答案