添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

本篇文章分享NumPy 数组复制与视图详解,对你有帮助的话记得收藏一下,看Python资料网收获更多编程知识

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.baseNone,则数组拥有自己的数据,否则它是一个视图。

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),则数组具有:

每个元素 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 的三维数组。

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

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎点赞、收藏、关注


版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:[email protected]进行投诉反馈,一经查实,立即删除!

上一篇: Python-VBA函数之旅-open函数
下一篇: Django 安全性与防御性编程:如何保护 Django Web 应用

  • Python 中自动打开网页并点击[自动化脚本],Selenium
  • Anaconda基础使用
  • 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
  • manim边学边做--三维的点和线
  • CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
  • Anaconda安装配置Jupyter(2024最新版)
  • Python中读取Excel最快的几种方法!
  • Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
  • 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
  • 版本匹配指南:Numpy版本和Python版本的对应关系
  • 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
  • Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
  • 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
  • Python与PyTorch的版本对应
  • Anaconda版本和Python版本对应关系(持续更新...)
  • Python pyinstaller打包exe最完整教程
  • Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj
  •