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 的三维数组。
在评论中分享您的代码和输出。
最后
为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎点赞、收藏、关注
NumPy 数组复制与视图详解的更多相关文章
- GoLang基础数据类型--->数组(array)详解
GoLang基础数据类型--->数组(array)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Golang数组简介 数组是Go语言编程中最常用的数据结构之一.顾名 ...
- ASP.NET MVC 5 学习教程:Edit方法和Edit视图详解
原文 ASP.NET MVC 5 学习教程:Edit方法和Edit视图详解 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 ...
- 【译】ASP.NET MVC 5 教程 - 7:Edit方法和Edit视图详解
原文:[译]ASP.NET MVC 5 教程 - 7:Edit方法和Edit视图详解 在本节中,我们继续研究生成的Edit方法和视图.但在研究之前,我们先将 release date 弄得好看一点.打 ...
- MySQL复制相关参数详解
MySQL复制相关参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.复制相关系统变量 1>.server_id 是必须设置在master和每个slave上的唯一标 ...
- [转]PostgreSQL教程(十六):系统视图详解
这篇文章主要介绍了PostgreSQL教程(十六):系统视图详解,本文讲解了pg_tables.pg_indexes.pg_views.pg_user.pg_roles.pg_rules.pg_set ...
- CorelDRAW中如何复制对象属性详解
复制对象属性是一种比较特殊.重要的复制方法,它可以方便而快捷地将指定对象中的轮廓笔.轮廓色.填充和文本属性通过复制的方法应用到所选对象中.本教程将详解CorelDRAW中如何复制对象属性. Corel ...
- (转)oracle视图详解
Oracle视图详解 一. 视图的定义 视图(view),也称虚表, 不占用物理空间,这个也是相对概念,因为视图本身的定义语句还是要存储在数据字典里的.视图只有逻辑定义.每次使用的时候,只是重新执 ...
- 数据结构与算法系列2 线性表 使用java实现动态数组+ArrayList源码详解
数据结构与算法系列2 线性表 使用java实现动态数组+ArrayList源码详解 对数组有不了解的可以先看看我的另一篇文章,那篇文章对数组有很多详细的解析,而本篇文章则着重讲动态数组,另一篇文章链接 ...
- Day17:稀疏数组的超细详解
稀疏数组的超细详解 一个含有大量重复元素的二维数组,我们可以提取其有效元素,压缩空间,整合为一个稀疏数组. 例如一个五子棋棋盘,我们将棋盘看作为一个二维数组,没有棋子的位置为0:黑棋为1:白棋为2: ...
- calcite物化视图详解
概述 物化视图和视图类似,反映的是某个查询的结果,但是和视图仅保存SQL定义不同,物化视图本身会存储数据,因此是物化了的视图. 当用户查询的时候,原先创建的物化视图会注册到优化器中,用户的查询命中物化 ...
随机推荐
- Jetpack Compose(4)——重组
目录 一.状态变化 1.1 状态变化是什么 1.2 mutableStateListOf 和 mutableStateMapOf 二.重组的特性 2.1 Composable 重组是智能的 2.2 C ...
- 5 CSS伪类选择器
5 伪类选择器 anchor伪类:专用于控制链接的显示效果 More Actions:link a:link 选择所有未被访问的链接. :visited a:visited 选择所有已被访问的链接. ...
- #范德蒙德卷积,第二类斯特林数,NTT#洛谷 2791 幼儿园篮球题
题目 \(T(T\leq 200)\)组数据求 \[\frac{1}{C(n,k)}\sum_{i=0}^kC(m,i)C(n-m,k-i)i^L \] 对于所有数据满足 \(n,m,k\leq 2* ...
- Promise + Async&Await + Array.reduce + 函数递归 解决网络/接口请求的依次/排队不间断间隔访问
背景 试想在一个需要频繁更新数据的场景(例如:监控.图表类),常规方法是设置一个间隔 N 秒的定时器 setInterval:但是这种方式存在一个问题,当前一个请求时间过长时(超过了间隔时间),后一个 ...
- 【直播回顾】如何成为一名优秀的OpenHamrony贡献者?
5月18日晚上19点,战"码"先锋第一期直播<如何成为一名优秀的OpenHamrony 贡献者?>,在OpenHarmony社群内成功举行. 本期课程,由润和资深软件开 ...
- Solr安全控制,开启基本身份验证
前言:请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 背景:solr默认安装没带权限控制,每次进入页面直接操作都有点裸奔的感觉. 一.SolrCloud集群模式 说明:要使用基本身份验证您必 ...
- 安装 php_mongodb.dll的坑
背景 php_mongodb.dll在这里介绍的是for php,php_mongodb.dll是这个坑,因为php_mongodb.dll前生是php_mongo.dll,而这个东西,它又不更新了, ...
- javascript现代编程系列教程之二——IIFE
IIFE(Immediately Invoked Function Expression,立即执行函数表达式)是一个在定义后立即执行的JavaScript函数.它具有以下特点: 是一个匿名函数:通常情 ...
- 基础 IO (Linux学习笔记)
基础IO 1.重谈文件 空文件在磁盘也要占据空间 文件 = 内容 + 属性 文件操作 = 对文件内容+对属性 or 对文件内容加属性 标定一个文件,必须使用文件路径加文件名[唯一性] 如果没有指明对应 ...
- 优化搜索排序结果从而“ 提升CTR、CVR业务指标”
简介: 搭建搜索功能不难,难的是如何提高搜索质量,帮助用户快速找到心中所想的内容或商品,那么搜索结果的相关性排序则是影响用户体验最关键的一环,本文通过阿里云开放搜索电商行业解决方案和大家聊一聊如何优化 ...