📅  最后修改于: 2023-12-03 14:46:21.243000             🧑  作者: Mango
在 NumPy 中,.view()
是一种通用方法,能够返回一个共享相同数据的新数组,但具有不同的维度大小或形状的方法。 .view()
主要用于通过不同方式解释相同的数据来创建新的可变数组。它还可以用于查看数组不同的维度和大小的视图,而不需要创建新的数据块。
ndarray.view(dtype=None, type=None)
dtype
(可选) - 与返回数组关联的数据类型,指明了所得的视图的数据类型。默认为 None
。type
(可选) - 返回结果的类型。例如,如果是“matrix”,则返回一个矩阵。默认为 None
。返回一个共享相同数据的新 Numpy 数组,但具有不同的维度大小或形状。
下面的示例显示了如何使用 numpy.matrix.view()
方法创建新的数组。
import numpy as np
# 创建一个一维数组
arr = np.array([1, 2, 3, 4, 5])
print("原始数组:", arr)
# 创建数组视图
arr_view = arr.view()
print("查看视图前的原始数组:", arr)
print("查看视图后的数组:", arr_view)
# 修改视图元素值
arr_view[0] = 6
print("修改后的数组视图:", arr_view)
print("修改后的原始数组:", arr)
输出:
原始数组: [1 2 3 4 5]
查看视图前的原始数组: [1 2 3 4 5]
查看视图后的数组: [1 2 3 4 5]
修改后的数组视图: [6 2 3 4 5]
修改后的原始数组: [6 2 3 4 5]
在上面的示例中,我们首先创建一个包含 5 个整数的数组;然后使用 .view()
方法创建了一个名为 arr_view
的数组视图。我们修改视图中的第一个元素,并打印修改后的数组视图和原始数组,可以看到,视图与原始数组共享数据。元素的修改将同时反映在两个数组中。
如果要创建一个与 numpy.matrix
类型关联的数组视图,可以将 type
参数设置为 'matrix'。下面给出了一个示例:
import numpy as np
# 创建一个矩阵
mat = np.matrix('1 2; 3, 4')
print("原始矩阵:")
print(mat)
# 创建数组视图
mat_view = mat.view(type=np.matrix)
print("查看视图前的原始矩阵:")
print(mat)
print("查看视图后的矩阵:")
print(mat_view)
# 修改视图元素值
mat_view[0, 0] = 5
print("修改后的数组视图:")
print(mat_view)
print("修改后的原始矩阵:")
print(mat)
输出:
原始矩阵:
[[1 2]
[3 4]]
查看视图前的原始矩阵:
[[1 2]
[3 4]]
查看视图后的矩阵:
[[1 2]
[3 4]]
修改后的数组视图:
[[5 2]
[3 4]]
修改后的原始矩阵:
[[5 2]
[3 4]]
在这个示例中,我们创建了一个包含两行两列的矩阵,并使用 .view()
访问该矩阵的视图。我们使用了 type=np.matrix
将返回值转换为矩阵类型。我们修改视图中的第一个元素,并打印修改后的数组视图和原始数组,可以看到,视图与原始数组共享数据。元素的修改将同时反映在两个数组中。
在 NumPy 中,.view()
方法是一种创建数组视图的强大工具。它返回一个包含相同数据的新数组,但可以控制它的形状和类型。这对于创建可变长度的多维数组以及将数据解释为新的形状非常有用。在使用它时要注意,.view()
方法返回一个视图,而不是新的数据块。这意味着,二者共享相同的数据,因此修改一个数组或视图中的元素将同时影响另一个。