NumPy 副本和视图2024 年 8 月 29 日 | 阅读 3 分钟 输入数组的副本物理上存储在其他某个位置,并返回存储在该特定位置的内容,该内容是输入数组的副本,而视图返回的是同一内存位置的不同视图。 在本教程的这一部分,我们将考虑从某些内存位置生成不同副本和视图的方式。 数组赋值将 numpy 数组分配给另一个数组不会直接复制原始数组,而是创建另一个具有相同内容和相同 id 的数组。它表示对原始数组的引用。对此引用所做的更改也会反映在原始数组中。 id() 函数返回数组的通用标识符,类似于 C 中的指针。 请看以下示例。 示例输出 Original Array: [[ 1 2 3 4] [ 9 0 2 3] [ 1 2 3 19]] ID of array a: 139663602288640 making copy of the array a ID of b: 139663602288640 Changes on b also reflect to a: [[ 1 2 3] [ 4 9 0] [ 2 3 1] [ 2 3 19]] ndarray.view() 方法ndarray.view() 方法返回新的数组对象,该对象包含与原始数组相同的内容。由于它是一个新的数组对象,因此对此对象所做的更改不会反映原始数组。 请看以下示例。 示例输出 Original Array: [[ 1 2 3 4] [ 9 0 2 3] [ 1 2 3 19]] ID of array a: 140280414447456 ID of b: 140280287000656 printing the view b [[ 1 2 3 4] [ 9 0 2 3] [ 1 2 3 19]] Changes made to the view b do not reflect a Original array [[ 1 2 3 4] [ 9 0 2 3] [ 1 2 3 19]] view [[ 1 2 3] [ 4 9 0] [ 2 3 1] [ 2 3 19]] ndarray.copy() 方法它返回原始数组的深层副本,该副本不与原始数组共享任何内存。对原始数组的深层副本所做的修改不会反映原始数组。 请看以下示例。 示例输出 Original Array: [[ 1 2 3 4] [ 9 0 2 3] [ 1 2 3 19]] ID of array a: 139895697586176 ID of b: 139895570139296 printing the deep copy b [[ 1 2 3 4] [ 9 0 2 3] [ 1 2 3 19]] Changes made to the copy b do not reflect a Original array [[ 1 2 3 4] [ 9 0 2 3] [ 1 2 3 19]] Copy [[ 1 2 3] [ 4 9 0] [ 2 3 1] [ 2 3 19]] 下一个主题NumPy 矩阵库 |
我们请求您订阅我们的新闻通讯以获取最新更新。