开发者

numpy多维数组索引问题

开发者 https://www.devze.com 2023-05-11 09:22 出处:网络 作者: dandeseed
目录numpy多维数组索引切片索引布尔索引多维数组的索引与切片(基于numpy)总结numphppy多维数组索引
目录
  • numpy多维数组索引
    • 切片索引
    • 布尔索引
  • 多维数组的索引与切片(基于numpy)
    • 总结

      numphppy多维数组索引

      切片索引

      python的numpy中的多维数组,有时候需要定位到数组中的某些区域元素的位置。

      • 一维

      一维数组很简单,我们可以直接指定索引,或者使用切片索引。

      比如: data[0],编程客栈这时候输出单个具体数值,没有维度

      data[:3],这时候输出一个一维的子数组

      • 二维

      二维数组也不难理解

      data[0,1] 定位一个指定的具http://www.devze.com体数值,没有维度

      data[0,:]定位一维数组

      data[:,:] 定位二维数组

      • 三维

      三维数组有些难以理解,之前遇到的三维数组有点蒙圈,现在重点理解一下。

      比如现在创建一个三维数组

      array([[[ 0, 1, 2],
          [ 3, 4, 5],
          [ 6, 7, 8]],
         [[ 9, 10, 11],
          [12, 13, 14],
          [15, 16, 17]],
         [[18, 19, 20],
          [21, 22, 23],
          [24, 25, 26]]])

      data[:,:,1] 会定位输出一个二维数组,具体怎么输出这个二维数组呢,我们把第一列的索引看作第一维,第二列索引看作第二维,第三列索引看作第三维,第三维是个确定的索引,所以我们的第三维数组将会降维的一个具体的值,最后得到的二维数组将会是第一维和第二维组成的一个二维数组。

      array([[ 1, 4, 7],
         [10, 13, 16],
         [19, 22, 25]])

      同理data[:,1,1]会定位python输出一个一维数组,他的输出是:

      array([ 4, 13, 22])

      四维

      四维和三维类似,具体到哪个维度的索引我们就降维哪一维

      布尔索引

      一维

      多维数组的索引与切片(基于numpy)

      根据我的理解,关于多维数组的索引与切片,不需android要可以去记他的模式,这一小块,唯一需要理解的是这个多维数组的shape.只要把这个概念真正理解了,关于索引与切片问题迎刃而解了;

      numpy多维数组索引问题

      首先初始化上面的这样一个多维数组x,观察其x的数组结构,然后看x.shape=(2,3,3). 观察这个结果,其实含义可以理解为,后面的(3,3)是一个矩阵,表示其行数与列数,前面的2表示到底有几个这样的矩阵。你再查看其x的表示结构,是不是很好理解了。

      那么现在我们要利用索引方式取特定位置上的数,注意其索引是从0开始的,那么取几个索引,看看是不是理想的结果、

      numpy多维数组索引问题

      根据理解,x[0][2][1]表示取第一个矩阵中,第三行第二列的数字。(注意索引是从0开始的)

      如果上面的开发者_JAVA教程你真正理解,那么切片也不是什么困难的,下面来切一下:

      numpy多维数组索引问题

      基于上面的结果,这里做了两个切片。(注意切片的值。如1:3,  实际上只能取1,2  这里要注意)

      其中一个切片为x[1][0][1:3]  实际上可以理解为我要在第二个矩阵中做切片。怎么切那? 取第一行的1~2列、、看看结果、、(还是要注意索引从0开始哦)

      另外一个切片是x[0][2][:2]

      总结

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

      0

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      关注公众号