📜  NumPy-副本和视图(1)

📅  最后修改于: 2023-12-03 14:44:49.120000             🧑  作者: Mango

NumPy-副本和视图

在NumPy中,我们可以创建数组的副本和视图。这对于处理大量和大型数据非常有用。在本文中,我们将了解副本和视图的概念以及如何使用它们。

副本

副本是原始数组的一个完整的复制。如果副本发生任何更改,则原始数组不受影响。下面是如何创建一个数组的副本:

import numpy as np

arr = np.array([1, 2, 3, 4])
arr_copy = arr.copy() # 创建数组的副本

arr_copy[0] = 0 # 更改数组的第一个元素
print(arr) # 输出 [1 2 3 4]
print(arr_copy) # 输出 [0 2 3 4]
视图

视图是原始数组的一个子集或图像。如果视图发生任何更改,则原始数组也会受到影响。下面是如何创建数组的视图:

import numpy as np

arr = np.array([1, 2, 3, 4])
arr_view = arr.view() # 创建数组的视图

arr_view[0] = 0 # 更改视图的第一个元素
print(arr) # 输出 [0 2 3 4]
print(arr_view) # 输出 [0 2 3 4]

您可以通过使用base属性来检查数组是否有基础对象。如果基础对象为None,则该数组为原始数组。否则,它是基础对象的视图。

import numpy as np

arr = np.array([1, 2, 3, 4])
arr_view = arr.view() # 创建数组的视图

print(arr_view.base) # 输出 [1 2 3 4]
print(arr.base) # 输出 [1 2 3 4]

另外,您可以使用reshape方法创建一个数组视图,该数组具有更改形状的形状。下面是一个示例:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
arr_view = arr.reshape((2, 4)) # 创建一个形状为(2, 4)的数组视图

print(arr_view) # 输出 [[1 2 3 4] [5 6 7 8]]
print(arr_view.base) # 输出 [1 2 3 4 5 6 7 8]
总结

副本和视图是NumPy中非常有用的概念。了解它们有助于您更好地操作NumPy数组。在本文中,我们介绍了如何创建数组的副本和视图,并且展示了如何使用基础属性和reshape方法来检查和创建视图。