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
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
python计算时间差的方法
pandas时间序列之如何将int转换成datetime格式
![](https://img.aspxhome.com/file/2023/1/84061_0s.png)
PHP实现HTML页面静态化的方法
![](https://img.aspxhome.com/file/2023/3/72683_0s.png)
基于PHP常用文件函数和目录函数整理
Python绘制灯笼的示例代码
利用Python求阴影部分的面积实例代码
![](https://img.aspxhome.com/file/2023/3/89103_0s.png)
Python issubclass和isinstance函数的具体使用
渗透和改变 非洲web 2.0网站Logo
![](https://img.aspxhome.com/file/UploadPic/20081/22/2008122135247290s.jpg)
sql 存储过程分页代码 支持亿万庞大数据量
SQL Server 2005恢复Master库
浅谈python锁与死锁问题
Go项目实现优雅关机与平滑重启功能
Python语法学习之进程池与进程锁详解
![](https://img.aspxhome.com/file/2023/3/101333_0s.png)
oracle数据库导入导出命令使用方法
小谈访客浏览器分辨率
![](https://img.aspxhome.com/file/UploadPic/200710/18/20071018132343756s.png)
图文详解如何利用PyTorch实现图像识别
![](https://img.aspxhome.com/file/2023/1/83661_0s.png)
pytorch dataloader 取batch_size时候出现bug的解决方式
python实现记事本功能
![](https://img.aspxhome.com/file/2023/1/75221_0s.gif)
Python中元组的概念及应用小结
![](https://img.aspxhome.com/file/2023/1/93491_0s.png)
全网首秀之Pycharm十大实用技巧(推荐)
![](https://img.aspxhome.com/file/2023/9/63259_0s.png)