前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Numpy入门之 多维数组

Numpy入门之 多维数组

作者头像
用户6021899
发布2019-08-14 15:55:46
8200
发布2019-08-14 15:55:46
举报

多维数组是用来描述多层嵌套的数据的一种模型,(如 图书馆的 楼,层,房间,书架,书架上的行和列),出于内存对齐的需要,它要求同一级的子数组要有相同的形状尺寸,还要求每个元素的数据类型相同。(6维数组可以类比这样一个特殊的图书馆,它每栋楼都有相同的层数,每一层都有相同的房间数,每个房间都有相同数量的书架,每个书架都有相同的行数,书架上每一行只能放相同数量的书。)。

数组有多少层/维,就可以说有多少个轴。Numpy数组最外的那一层称为第0轴(楼),往内依次是第1轴(层),第2轴(房间),第3轴(书架),第4轴(行),第5轴(列)。最常见的多维数组是 2 维数组,其第0轴称作行,第1轴称作列。

可以使用元组(tuple)作为数组的下标存取数组的元素:

代码语言:javascript
复制
>>> a = np.arange(10).reshape(-1,1)#第1轴变为1列,第0轴自动调整
>>> a
array([[0],
       [1],
       [2],
       [3],
       [4],
       [5],
       [6],
       [7],
       [8],
       [9]])
>>> a = a + np.arange(10) #broadcast 广播,后面回介绍
>>> a
array([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9],
       [ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10],
       [ 2,  3,  4,  5,  6,  7,  8,  9, 10, 11],
       [ 3,  4,  5,  6,  7,  8,  9, 10, 11, 12],
       [ 4,  5,  6,  7,  8,  9, 10, 11, 12, 13],
       [ 5,  6,  7,  8,  9, 10, 11, 12, 13, 14],
       [ 6,  7,  8,  9, 10, 11, 12, 13, 14, 15],
       [ 7,  8,  9, 10, 11, 12, 13, 14, 15, 16],
       [ 8,  9, 10, 11, 12, 13, 14, 15, 16, 17],
       [ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]])
>>> a[(2,3)] #使用元组作为数组下标
5

也可以使用整数序列进行存取:

代码语言:javascript
复制
>>> a[3: , [0, 2, 4]] # 第0轴取第3及之后所有行,第1轴取第0,2,4列
array([[ 3,  5,  7],
       [ 4,  6,  8],
       [ 5,  7,  9],
       [ 6,  8, 10],
       [ 7,  9, 11],
       [ 8, 10, 12],
       [ 9, 11, 13]])  

还可以使用数组进行存储:

代码语言:javascript
复制
>>> a[np.array([0,1,3])] #相当于a[[0,1,3]]
array([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9],
       [ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10],
       [ 3,  4,  5,  6,  7,  8,  9, 10, 11, 12]])
>>> a[[0,1,3]] 
array([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9],
       [ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10],
       [ 3,  4,  5,  6,  7,  8,  9, 10, 11, 12]])
       
>>> a[np.array([0,1,3]), np.array([0,1,2])] #a[(0,0)],a[(1,1)],a[(3,2)]组成的数组
array([0, 2, 5])
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python可视化编程机器学习OpenCV 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档