我们通过一些例子来帮助我们理解数组中的切片操作。

在python编程中什么是切片?若何经由进程切片快速获取数据结构中元素_维度_数组 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),我们切片的时候,是先切第一维(2),再切第二维(3),末了切第三维(4),这是有顺序的。

切片的时候:表示所有,表示所在维度的所有。

不同维度之间切片用逗号隔开,比如a[0,0,0]逗号隔开了第一个维度我们要0,第二个维度我们还要0,第三个维度我们还是要0,以是终极a[0,0,0]为0:

解析4:g[0,:,:]表示第一维度切0,第二个维度全切了(全要了),第三个维度也全要了,当多个冒号可以用一个省略号(...)来代替,因此上面的代码等价于g[0,…]。

解析7: g[0,1,::2]表示第一维度切0,第二维度切1,第三维度所有并且以2为步长(::2这种组合要把稳)。

解析8:…表示多个冒号,以是8我们也可以写为g[:,:,1]

解析11:第一维切0,也便是

第二维切:,表示所有,也便是

第三维-1表示倒着数第一,也便是

那么终极结果为

解析12:g[0,::-1,-1],这个第一维度切0,此时为

第二维度为反转(::-1的浸染便是反转),此时为

第三维-1,表示倒着数第一

以是终极的结果便是array([11, 7, 3])

解析13:g[0,::2,-1]

第一维切0,此时为

第二维的操作是步长为2的获取,此时为:

第三维为倒数第一

解析14:g[::-1],这个表示第一维实行反转操作,第二维和第三维的操作并没有写,也便是没有操作,没有操作那么便是获取所有的意思。

9. 改变数组的维度

ravel表示将数组展平

我们可以看出来ravel将数组展平,它会返回一个展平的数组,单并没有修正数组本身,这个和reshape是一样的。

flatten函数也有展平数组的浸染

reshape()函数可以修正矩阵的维度,单并没有修正矩阵本身

resize和reshape一样可以修正数组的维度,但是resize可以修正数组本身

和resize类似我们可以利用shape来改变矩阵的维度:

利用shape要把稳两点,第一点=,第二点通报一个元组()

可以利用transpose完成矩阵的转置:

总之我们记住两点,只有resize和shape(元组)是对数组本身修正