专栏举荐
专栏
每日五分钟玩转python基本编程
作者:幻风的AI之路
查看
专栏
每日5分钟快速玩转设备学习算法
作者:幻风的AI之路
查看
切片
一维数组的索引和切片
咱们经过有些例子来帮忙咱们理解数组中的切片操作。
g[3:7]暗示获取数组中的索引下标3到6
g[:7:2]= g[0:7:2]暗示获取数组中的索引0到6的,而后以2为步长选择元素
g[::-1] 利用负数下标翻转数组
8. 多维数组的切片和索引
这儿咱们先创建了一个一维数组,而后运用reshape函数将一维数组的改为三维数组,维度为(2,3,4),2,3,4的对应关系如上所示。这儿要重视一点的是g.reshape办法返回更改维度的数组,然则它无修改数组本身,咱们能够reshape之后的数组将其赋值给一个变量,这般咱们才能够看到reshape之后的数组,本例便是reshape之后将其赋值给了g,而后g便是(2,3,4)的数组了。
reshape之后无赋值的:
reshape之后赋值的:
此刻咱们对g数组进行切片操作:
此刻咱们逐一对上面的切片操作进行解析,咱们先来看一下咱们切片的数组:
切片是根据维度来逐一切片的,本例中咱们的数组的维度是(2,3,4),咱们切片的时候,是先切第1维(2),再切第二维(3),最后切第三维(4),这是有次序的。
切片的时候:暗示所有,暗示所在维度的所有。
区别维度之间切片用逗号隔开,例如a[0,0,0]逗号隔开了第1个维度咱们要0,第二个维度咱们还要0,第三个维度咱们还是要0,因此最后a[0,0,0]为0:
解析4:g[0,:,:]暗示第1维度切0,第二个维度全切了(全要了),第三个维度亦全要了,当多个冒号能够用一个省略号(...)来代替,因此呢上面的代码等价于g[0,…]。
解析7: g[0,1,::2]暗示第1维度切0,第二维度切1,第三维度所有并且以2为步长(::2这种组合要重视)。
解析8:…暗示多个冒号,因此8咱们亦能够写为g[:,:,1]
解析11:第1维切0,亦便是
第二维切:,暗示所有,亦便是
第三维-1暗示倒着数第1,亦便是
那样最后结果为
解析12:g[0,::-1,-1],这个第1维度切0,此时为
第二维度为反转(::-1的功效便是反转),此时为
第三维-1,暗示倒着数第1
因此最后的结果便是array([11, 7, 3])
解析13:g[0,::2,-1]
第1维切0,此时为
第二维的操作是步长为2的获取,此时为:
第三维为倒数第1
解析14:g[::-1],这个暗示第一维执行反转操作,第二维和第三维的操作并无写,亦便是无操作,无操作那样便是获取所有的意思。
9. 改变数组的维度
ravel暗示将数组展平
咱们能够看出来ravel将数组展平,它会返回一个展平的数组,单并无修改数组本身,这个和reshape是同样的。
flatten函数亦有展平数组的功效
reshape()函数能够修改矩阵的维度,单并无修改矩阵本身
resize和reshape同样能够修改数组的维度,然则resize能够修改数组本身
和resize类似咱们能够运用shape来改变矩阵的维度:
运用shape要重视两点,第1点=,第二点传递一个元组()
能够运用transpose完成矩阵的转置:
总之咱们记住两点,仅有resize和shape(元组)是对数组本身修改