Python中的List和NumPy中的Array是两种不同的数据结构,它们的拷贝方式也有所不同。
Python中的List拷贝
Python中的List可以使用简单的赋值语句来进行拷贝,即将一个List赋值给另一个List,如:
list_a = [1,2,3] list_b = list_a
这样就完成了List的拷贝,但是这种方式只是完成了浅拷贝,也就是说list_b和list_a指向的是同一个内存地址,修改其中一个list,另一个list也会受到影响,如:
list_a = [1,2,3] list_b = list_a list_a.append(4) print(list_b) # 输出:[1,2,3,4]
可以看到,list_b也被修改了,如果要完成真正的拷贝,就需要使用切片操作,即:
list_a = [1,2,3] list_b = list_a[:]
这样就完成了真正的拷贝,list_b和list_a指向的是不同的内存地址,修改其中一个list,另一个list不会受到影响,如:
list_a = [1,2,3] list_b = list_a[:] list_a.append(4) print(list_b) # 输出:[1,2,3]
NumPy中的Array拷贝
NumPy中的Array可以使用copy()函数来进行拷贝,如:
import numpy as np array_a = np.array([1,2,3]) array_b = array_a.copy()
这样就完成了Array的拷贝,array_b和array_a指向的是不同的内存地址,修改其中一个Array,另一个Array不会受到影响,如:
import numpy as np array_a = np.array([1,2,3]) array_b = array_a.copy() array_a[0] = 4 print(array_b) # 输出:[1 2 3]
两者拷贝的区别
Python中的List拷贝需要使用切片操作,而NumPy中的Array拷贝可以使用copy()函数。
Python中的List拷贝只能完成浅拷贝,而NumPy中的Array拷贝可以完成深拷贝。