在Python中拷贝多维数组对象的方法
发布时间:2024-01-10 18:07:44
在Python中拷贝多维数组对象有多种方法,下面将介绍其中几种常用的方法并给出使用例子。
1. 使用copy()方法
copy()方法能够拷贝多维数组对象,并创建一个新的数组对象,新旧数组之间互不影响。可以通过numpy库的array()方法创建多维数组对象。
import numpy as np
# 创建一个多维数组
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
print("原始数组:")
print(arr1)
# 使用copy()方法拷贝数组
arr2 = arr1.copy()
# 修改拷贝后的数组
arr2[0, 0] = 100
# 打印原始数组和拷贝后的数组
print("拷贝后的数组:")
print(arr2)
print("原始数组:")
print(arr1)
输出结果:
原始数组: [[1 2 3] [4 5 6]] 拷贝后的数组: [[100 2 3] [ 4 5 6]] 原始数组: [[1 2 3] [4 5 6]]
可以看到,通过copy()方法拷贝的数组和原始数组是独立的,修改一个数组不会影响另一个数组。
2. 使用deepcopy()方法
deepcopy()方法也可以用于拷贝多维数组对象,并创建一个新的数组对象。不同于copy()方法,deepcopy()方法会递归拷贝整个数组对象的内容,包括嵌套的子数组。
import numpy as np
# 创建一个多维数组
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
print("原始数组:")
print(arr1)
# 使用deepcopy()方法拷贝数组
arr2 = np.copy(arr1)
# 修改拷贝后的数组
arr2[0, 0] = 100
# 打印原始数组和拷贝后的数组
print("拷贝后的数组:")
print(arr2)
print("原始数组:")
print(arr1)
输出结果:
原始数组: [[1 2 3] [4 5 6]] 拷贝后的数组: [[100 2 3] [ 4 5 6]] 原始数组: [[1 2 3] [4 5 6]]
同样可以发现,通过deepcopy()方法拷贝的数组和原始数组是独立的,修改一个数组不会影响另一个数组。
总结:
- copy()方法和deepcopy()方法都可用于拷贝多维数组对象,创建新的数组对象,而不是共用一个数组对象。
- copy()方法只拷贝数组对象本身,不会递归拷贝嵌套的子数组,而deepcopy()方法会递归拷贝整个数组对象的内容,包括嵌套的子数组。
注意事项:
- 当使用copy()方法或者deepcopy()方法拷贝数组对象时,如果数组对象的子数组过多或者数组对象的维度较高,会消耗较多的时间和内存资源。同时,拷贝的数组对象越大,拷贝的时间和内存消耗就越大。在实际应用中,需要根据具体情况选择合适的拷贝方法。
