NumPy数组复制与视图详解

 更新时间:2024年05月16日 09:31:29   作者:小万哥丶  
NumPy 数组的复制和视图是两种不同的方式来创建新数组,它们之间存在着重要的区别,本文将给大家详细介绍一下NumPy数组复制与视图,并通过代码示例讲解的非常详细,需要的朋友可以参考下

NumPy 数组的复制与视图

NumPy 数组的复制和视图是两种不同的方式来创建新数组,它们之间存在着重要的区别。

复制

复制 会创建一个包含原始数组相同元素的新数组,但这两个数组拥有独立的内存空间。这意味着对复制进行的任何更改都不会影响原始数组,反之亦然。

创建副本可以使用以下方法:

arr.copy():创建一个新的数组,该数组包含与原始数组相同元素的副本。 np.array(arr):将数组转换为新的 NumPy 数组。 arr[:]:使用切片创建整个数组的副本。

示例:

import numpy as np

arr = np.array([1, 2, 3, 4, 5])

# 创建副本
copy = arr.copy()

# 修改副本
copy[2] = 100

# 打印原始数组和副本
print(arr)
print(copy)

输出:

[ 1  2  3  4  5]
[ 1  2 100  4  5]

视图

视图 是对原始数组数据的引用,不拥有独立的内存空间。这意味着对视图进行的任何更改都会直接反映在原始数组中,反之亦然。

创建视图可以使用以下方法:

arr.view():创建一个新的数组,该数组是原始数组数据的视图。 arr[start:end]:使用切片创建原始数组的视图。 arr.reshape():改变数组的形状,但不改变底层数据。

示例:

import numpy as np

arr = np.array([1, 2, 3, 4, 5])

# 创建视图
view = arr.view()

# 修改视图
view[2] = 100

# 打印原始数组和视图
print(arr)
print(view)

输出:

[ 1  2 100  4  5]
[ 1  2 100  4  5]

检查数组是否拥有数据

我们可以使用 arr.base 属性来检查数组是否拥有其数据。如果 arr.base 为 None,则数组拥有自己的数据,否则它是一个视图。

示例:

import numpy as np

arr = np.array([1, 2, 3, 4, 5])

copy = arr.copy()
view = arr.view()

print(copy.base)  # None
print(view.base)  # <ndarray object at 0x00000222588287E0>

练习

使用以下代码创建数组 arr

import numpy as np

arr = np.array([10, 20, 30, 40, 50])

并使用以下方法创建 arr 的副本:

arr.copy() np.array(arr) arr[:]

在每个方法之后,打印原始数组和副本,并验证它们是否相等。

在评论中分享您的代码和结果。

Sure, here is the requested Markdown formatted content:

获取数组的形状

NumPy 数组的形状描述了数组中元素的组织方式,并由包含每个维度中元素数量的元组表示。

获取数组形状

可以使用 arr.shape 属性获取 NumPy 数组的形状。它返回一个元组,其中每个元素表示相应维度的长度。

示例:

import numpy as np

# 创建一个二维数组
arr = np.array([[1, 2, 3], [4, 5, 6]])

# 获取数组形状
print(arr.shape)

输出:

(2, 3)

这意味着数组包含 2 行和 3 列。

形状元组的含义

形状元组中的每个元素表示相应维度的长度。例如,如果形状为 (2, 3, 4),则数组具有:

2 个行 3 列 每个元素 4 个值

使用 ndmin 创建具有特定形状的数组

我们可以使用 ndmin 参数来创建具有指定形状的新数组,即使原始数据不具有该形状。ndmin 参数指定要创建的最小维度数。如果原始数据具有比 ndmin 更高的维度,则形状将保留。如果维度数不足,则将添加新维度,并用 1 填充元素。

示例:

import numpy as np

# 使用 ndmin=5 创建一个包含值 1,2,3,4 的向量
arr = np.array([1, 2, 3, 4], ndmin=5)

print(arr)
print(arr.shape)

输出:

[[[[1 2 3 4]]]]
(1, 1, 1, 1, 4)

练习

创建以下形状的 NumPy 数组,并打印它们的形状:

一个包含 10 个元素的一维数组。 一个包含 5 行 4 列的二维数组。 一个包含 2 x 3 x 2 的三维数组。

在评论中分享您的代码和输出。

最后

到此这篇关于NumPy数组复制与视图详解的文章就介绍到这了,更多相关NumPy数组复制与视图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python内置函数 next的具体使用方法

    Python内置函数 next的具体使用方法

    这篇文章主要介绍了Python内置函数 next的具体使用方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Numpy中array数组对象的储存方式(n,1)和(n,)的区别

    Numpy中array数组对象的储存方式(n,1)和(n,)的区别

    本文主要介绍了Numpy中array数组对象的储存方式(n,1)和(n,)的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Django session登陆并获取值的实例

    Django session登陆并获取值的实例

    这篇文章主要介绍了Django session登陆并获取值的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • minpy使用GPU加速Numpy科学计算方式

    minpy使用GPU加速Numpy科学计算方式

    这篇文章主要介绍了minpy使用GPU加速Numpy科学计算方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • python库使用Fire库生成命令行参数

    python库使用Fire库生成命令行参数

    Python Fire是一个开源库,能把Python对象转换为命令行界面,Fire库是一个非常有用的工具,它可以帮助开发人员创建命令行界面,并且可以将任何Python对象转换为命令行界面,这篇文章主要介绍了python库使用Fire库生成命令行参数,需要的朋友可以参考下
    2024-02-02
  • Python实现yaml与json文件批量互转

    Python实现yaml与json文件批量互转

    这篇文章主要为大家详细介绍了如何利用Python语言实现yaml与json文件的批量互转,文中的示例代码讲解详细,感兴趣的小伙伴可以动手尝试一下
    2022-07-07
  • Python图像处理库scikit-image的使用方法详解

    Python图像处理库scikit-image的使用方法详解

    在计算机视觉与图像分析领域,Python已成为事实上的标准语言,scikit-image是SciPy生态的一部分,构建在NumPy、SciPy、matplotlib基础之上,旨在为科学计算和机器学习中的图像处理提供高质量、纯Python实现的算法,本文将从入门到实战,深入讲解scikit-image的方方面面
    2025-11-11
  • 详解将Python程序(.py)转换为Windows可执行文件(.exe)

    详解将Python程序(.py)转换为Windows可执行文件(.exe)

    这篇文章主要介绍了详解将Python程序(.py)转换为Windows可执行文件(.exe),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-07-07
  • Python编程tkinter库Canvas实现涂鸦颜色表及围棋盘示例

    Python编程tkinter库Canvas实现涂鸦颜色表及围棋盘示例

    这篇文章主要为大家介绍了Python编程中如何使用tkinter库Canvas来实现涂鸦,颜色表及围棋盘的示例,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-10-10
  • 通过Folium在地图上展示数据Python地理可视化的入门示例详解

    通过Folium在地图上展示数据Python地理可视化的入门示例详解

    这篇文章主要介绍了通过Folium在地图上展示数据Python地理可视化的入门,在本文中,我们介绍了如何使用Python中的Folium库进行地理可视化,通过Folium,我们可以轻松地创建交互式地图,并在地图上展示数据、绘制形状、添加图例和文本标签等,需要的朋友可以参考下
    2024-05-05

最新评论