Numpy入门之 多维数组

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

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

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

>>> 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

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

>>> 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]])  

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

>>> 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])

原文发布于微信公众号 - Python编程 pyqt matplotlib(wsplovePython)

原文发表时间:2019-03-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券