Numpy 三维数组索引与切片的实现
作者:算力鬼才信 发布时间:2021-08-17 22:19:35
在本篇的开始之前,我必须阐明,我们对数组无论是索引还是切片,我是通过编号(或称为序列号)来进行操作,请记住:无论是 0轴(行)还是 1轴(列),编号都是从0开始
这是一个三维数组,关于如何判断所定义的是几维数组,请观察数组的开头和结尾的中括号数目
import numpy as np
#这是一个 2x2x3 的三维数组
arr =np.array( [[[0, 1 ,2] ,[3, 4, 5]] ,[[6 ,7, 8],[9,10,11]]])
print(arr)
在多维数组中,如果你忽略后续的索引参数,他打印出的结果将会降低一个维度
我将会打印它的完整数组,以便大家用以比对
将定义的三维数组降低了一个维度,成为了二维数组
#打印以下结果
arrs = arr[1,2]
#index 2 is out of bounds for axis 1 with size 2 索引2超出大小为2的轴1的范围
我们可以分析一下出现这种问题的原因:
1,首先我这是索引,arr[1,2] 的含义是,取编号是1的行,编号是2的行,我们可以思考一下,三维数组降低一个维度应是二维数组,二维数组降低一个维度应是一维数组,arr[1,2]中的“1”呢,应是三维数组中的编号为“1”的行,三维数组中编号为“1”的行,应是一个二维数组,arr[1,2]中的“2”呢,应该在二维数组的基础上,就要降低一个维度,为一维数组,在下图中一维数组只有两行,编号分别为“0”和“1”哪里来的编号为“2”呢?是不是超出索引范围了。
同样对三维数组来说,我们也可以使用类似视图的操作
arr =np.array( [[[0, 1 ,2] ,[3, 4, 5]] ,[[6 ,7, 8],[9,10,11]]])
print(arr)
#打印以下结果
new_long = arr[0]
new_long = 22
print(arr)
我们经过将arr 三维数组中的编号为“0”的行arr[0]拿出来,赋值给了变量名new_long ,然后将new_long进行重新赋值为 “22”,new_long的值其实就是 arr[0]的值,我们将三维数组arr的打印出来,显然数组的元素值并没有发生任何变化。有的同学会问这有什么意义呢?
我们可以对数组切片做同样的操作来看看变化
import numpy as np
#这是一个 2x2x3 的三维数组
arr =np.array( [[[0, 1 ,2] ,[3, 4, 5]] ,[[6 ,7, 8],[9,10,11]],[[12,13,14],[15,16,17]]])
print(arr)
#打印以下结果
#我把arr三维数组中编号为“1”,和编号为“2”的数组拿了出来赋值给一个新定义的变量名new_long
new_long = arr[0:2]
# print(new_long)
#我对new_long中的数据进行了篡改
new_long[0] = 22
# arr[0] = new_long
#但是当我打印最初定义的三维数组 arr时,发现它的数据被篡改
print(arr)
你看发生了变化,我将三维数组中前两行拿了出来,是两个二维数组,然后我对第一个二维数组进行篡改当我再次打印最初定义的三维数组时发现它的数据发生了变化。最初定义的数组也被篡改了
说明了什么在numpy模块中定义的数组无论是几维,都遵循一个定义数组的切片是原数组的视图,任何对于视图的修改都会反映到原数组上。
来源:https://blog.csdn.net/weixin_59131972/article/details/129611094


猜你喜欢
- 💃今天看案例的时候看见了一个关于pandas数据的内存压缩功能,特地来记录一下。🎒先说明一下情况,pandas处理几百兆的dataframe
- #覆盖覆盖:在继承关系中,子类实现了与基类同名的方法,在子类的实例调用该方法时,实例调用的是子类的覆盖版本。通俗的讲,就是小明继承了他⑧的自
- 本文实例讲述了Python利用神经网络解决非线性回归问题。分享给大家供大家参考,具体如下:问题描述现在我们通常使用神经网络进行分类,但是有时
- 本文介绍以下内容:1. 使用transformers框架做预训练的bert-base模型;2. 开发平台使用Google的Colab平台,白
- 起因因为一些事情,需要将域名解析为ip地址,想到Python作为万能语言,就用Python来实现这个功能代码import socketurl
- 如何定义多对多关系Django 本身自带了一个很强大的ORM,支持自定义model并将其映射到数据库的表中model中可以定义各种类型的数据
- 一、条件简化我们编写的查询语句的搜索条件本质上是一个表达式,这些表达式可能比较繁杂,或者不能高效的执行,MySQL的查询优化器会为我们简化这
- 优点:·减少使用空间·使后面的背景层模糊或者渐隐出现让用户的焦点集中在当前层。什么时候使用(对话框等)模式窗口?·图片/视频灯箱效果·联系表
- turtle.pencolor(* args )返回或设置pencolor。允许四种输入格式:pencolor()将当前的pencolor返
- 一、概述一个gRPC服务的大体结构图为:图一表明,grpc的服务是跨语言的,但需要遵循相同的协议(proto)。相比于REST服务,gPRC
- 1.首先注册应用,获取 appkey、appsecretapi_url = "https://oapi.dingtalk.com/
- 概念关键字:array,数据的组合(多个)存储到一个指定的容器中,用变量指向该容器,然后可以通过变量一次性得到该容器中的所有数据.数组定义语
- 对于日志的处理,有时候需要把符合条件的日志计入数据库中一、添加pom依赖 <dependency> &
- 在添加新记录时,有时候我们需要将部分动态内容自动添加到指定的文本域,例如上传一个文件后,将文件名自动添加到一个独立的记录框内,以
- 本文实例讲述了php设计模式之装饰模式。分享给大家供大家参考,具体如下:介绍装饰者模式(Decorator Pattern)允许你向一个现有
- 聚焦爬虫:爬取页面中指定的页面内容。编码流程:1.指定url2.发起请求3.获取响应数据4.数据解析5.持久化存储数据解析分类:1.bs42
- 偶第一次发主题, 这个是在一个项目中的做...写的一般般, 有什么bug之类的是在所难免, 望见谅功能说明:1. 即时控制用户输入2. 将输
- PC登录新浪微博时,在客户端用js预先对用户名、密码都进行了加密,而且在POST之前会GET一组参数,这也将作为POST_DATA的一部分。
- python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。得到当前工作目录,即当前Python脚本工作的目录路
- 本文实例讲述了PHP基于phpqrcode类生成二维码的方法。分享给大家供大家参考,具体如下:使用PHP语言生成二维码,还是挺有难度的,当然