Python库之numpy之数组切片 | 您所在的位置:网站首页 › python库导入顺序 › Python库之numpy之数组切片 |
众所周知,python中有很多的库,numpy就是其中的一个库,做数据分析必备的库之一, 本文源自Recently祝祝,创自Recently祝祝。转载请标注出处。 首先让我们定义一个多维数组 方法一: 1:导入numpy包,重命名为np 导入 NumPy 后,您可以使用它的各种函数和类在 Python 中执行数值运算和数据分析。例如,您可以创建数组、执行算术运算以及使用 NumPy 的许多数学函数。 import numpy as np 复制代码2:定义一个数组(我发现用Spyder还是挺好用的,可以看到数据,不用输出) 创建一个 4x4 数组,其中每一行分别包含从 1 到 4、5 到 8、9 到 12 和 13 到 16 的整数。 D=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]) 复制代码数组是这样的:(索引值从0开始索引) 切片开始,准备好了吗? 1:先让我们来切出第一行 切片原理:切片多维数组就是前面表示行,后面表示列,用中括号括起来(这个不多说,下面的代码解释) A=D[1] #这两条代码都能得到数组的第一行 A1=D[1,:] 复制代码2:切出第一列(若只有一维数据,则在Spyder里会以列的形式排列) B=D[:,1] 复制代码3:取出D中行为1,列为2的数据,注意下标是从0开始的、 B1=D[1,2] 复制代码4:访问第1,3列数据 B2=D[:,[1,3]] 复制代码5:访问第1,3行数据 B3=D[[1,3],:] 复制代码6:取D中满足第0列大于5的所有列数据(:表示所有的行或是是列) C=D[D[:,0]] 复制代码7:取D中满足第0中大于5的第2,3列数据 按逻辑我们应该是这样写的: C1=D[D[:,0]>5,[2,3]] 复制代码看看上面的数据,你发现了什么?他只取了两个数,是他出错了吗?我们需要的是两列呀,为什么会这样呢? 原因:在numpy中设置行与列同时都是有条件限制,且都为多个限制用【】隔开时,只取行列一一对应的值。 上面的数相当于: C1=D[[2,3],[2,3]] 复制代码python中数组切片默认取值,第二行第二列下的元素与第三行第三列下的元素 那么如果我们想要取出:D中满足第0中大于5的第2,3列数据,怎么取呢? C2=D[D[:,0]>5,2:4] 复制代码总结点: 1:在numpy中,【】表示一个限制符号,前后需要一一位置对应取值,若想去规定行列的全部元素而不是单个元素来取值则需要将行列数值范围限制放在同一个【】中 2:行列规范范围,取左不取右,C2=D[D[:,0]>5,2:4]中列限制范围2:4,只取到了2,3列第四列没取 8:取D中满足第0列大于5的第1,2列数据 C3=D[D[:,0]>5,1:3] 复制代码9:加入逻辑运算,计算出#取D中第0,3行的所有列数据,本质上行及控制为逻辑列表,去逻辑值为真 TF=[True,False,True,False] D1=D[TF,:] 复制代码 #取出第0,3行的2,3列的元素 Dt4=[D[TF,2:4]] 复制代码10:取出D中大于4的数据 Dt5=D[D>4] 复制代码总结:当数据没有特殊行或者列的规定时,取出来的值为行列平行,就为一列 11:取中间几个元素,6,7,10,11(可以直接取值) 可以借助切片 : 或 … 与索引数组组合。 middle=D[1:3,1:3] 复制代码方法二: 要是一开始就先看了这方法,那我也不至于想了那么久还是没想明白,推荐一直使用这个方法,因为这个方法不仅好用,而且符合我们大脑的逻辑。 1:首先还是需要导入包: import numpy as np 复制代码2:定义数组 D=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]) 复制代码3:取第1,2行,1,3列 D3=D[np.ix_([1,2],[1,3])] 复制代码4:取0,1行,1,3列 D4=D[np.ix_(np.arange(2),[1,3])] 复制代码5:取第一列小于11,列数为1,2行的所有元素 D6=D[np.ix_(D[:,1] |
CopyRight 2018-2019 实验室设备网 版权所有 |