Numpy:配列のインデックス作成とスライス(Ndarray)


配列のインデックス作成とスライス

スライスとインデックスを使用して配列から要素を取得できます。通常のインデックスとスライスに加えて、新しいインデックス関数がndarrayに追加され、ndarrayから要素を簡単に取得できるようになりました。次に、配列から要素を取得する方法を紹介します。異なる次元の。

通常のインデックス

1D配列のインデックス作成

構文:配列名[インデックス値]

   >>> import numpy as np
   >>> a = np.array([2,4,6,8,10])
   array([ 2,  4,  6,  8, 10])
   >>> a[0] # 索引位置为0的元素
   2

2D配列インデックス

構文:配列名[行インデックス値、列インデックス値]

例:

   >>> a = np.arange(1, 25).reshape(4,6) # 创建二维数组
   >>> a
   array([[ 1,  2,  3,  4,  5,  6],
          [ 7,  8,  9, 10, 11, 12],
          [13, 14, 15, 16, 17, 18],
          [19, 20, 21, 22, 23, 24]])
   >>> a[2,4] # 获取索引为第2行,第4列的元素
   17

3D配列インデックス

構文:配列名[ページインデックス値、行インデックス値、列インデックス値]

例:

   >>> a = np.arange(1, 25).reshape(2,4,3) # 创建三维数组
   >>> a
   array([[[ 1,  2,  3],
           [ 4,  5,  6],
           [ 7,  8,  9],
           [10, 11, 12]],
   
          [[13, 14, 15],
           [16, 17, 18],
           [19, 20, 21],
           [22, 23, 24]]])
   >>> a[1, 2, 0] # 获取索引为第1页,第2行,第0列的元素
   19
   

スライス

1Dアレイスライス

構文:arrayname [開始値:終了値:ステップ]

  • ステップサイズのデフォルトは1です
  • 開始値のデフォルトは0です
  • 終了値はオープンインターバルです

例:

   >>> a = np.array([2,4,6,8,10])
   >>> a
   array([ 2,  4,  6,  8, 10])
   >>> a[1:3] # 切取从索引值1开始到索引值为3(不包含3)的元素
   array([4, 6])

二次元配列

構文:arrayname [行開始値:行終了値:行ステップ、列開始値:列終了値:列ステップ]

例:

   >>> a = np.arange(1, 25).reshape(4,6)
   >>> a
   array([[ 1,  2,  3,  4,  5,  6],
          [ 7,  8,  9, 10, 11, 12],
          [13, 14, 15, 16, 17, 18],
          [19, 20, 21, 22, 23, 24]])
   >>> a[1:4, 1:3] # 行选取索引从1开始到4结束(不包含4),列选取索引从1开始到3结束(不包含3)
   array([[ 8,  9],
          [14, 15],
          [20, 21]])
   

三次元配列

構文:配列名[ページ開始値:ページ終了値:ページステップ、行開始値:行終了値:行ステップ、列開始値:列終了値:列ステップ]

例:

   >>> a = a = np.arange(1, 49).reshape(3,4,4)
   >>> a
   array([[[ 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, 27, 28],
           [29, 30, 31, 32]],
   
          [[33, 34, 35, 36],
           [37, 38, 39, 40],
           [41, 42, 43, 44],
           [45, 46, 47, 48]]])
   >>> a[1:2,2:4,1:3] # 使用逗号间隔页,行,列
   array([[[26, 27],
           [30, 31]]])

上記の例から、多次元データの異なる次元を区切るためにコンマが使用されていることがわかります。

高度なインデックス

整数配列インデックス

一次元配列

構文:arrayname [[index1、index2、…]]

   >>> a = np.array([2,4,6,8,10])
   >>> a
   array([ 2,  4,  6,  8, 10])
   >>> a[[2,3]] # 同时获取多个元素,将索引值放入列表中构成整数数组索引
   array([6, 8])

二次元配列

構文:配列名[[行インデックス値]、[列インデックス値]]

   >>> a = np.arange(1, 25).reshape(4,6)
   >>> a
   array([[ 1,  2,  3,  4,  5,  6],
          [ 7,  8,  9, 10, 11, 12],
          [13, 14, 15, 16, 17, 18],
          [19, 20, 21, 22, 23, 24]])
   >>> a[[1,3],[2,2]] # 索引为1行、2列的元素,索引为3行、2列的元素。
   array([ 9, 21])

注:サンプルコードの最初のリスト[1,3]は行のインデックスであり、[2、2]は列のインデックスです。

三次元配列

構文:配列名[[ページインデックス値]、[行インデックス値]、[列インデックス値]]

   >>> a = np.arange(1, 49).reshape(3,4,4)
   >>> a
   array([[[ 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, 27, 28],
           [29, 30, 31, 32]],
   
          [[33, 34, 35, 36],
           [37, 38, 39, 40],
           [41, 42, 43, 44],
           [45, 46, 47, 48]]])
   >>> a[[0,1],[2,1],[0,3]] # 逗号间隔了页,行,列。第一个列表中为页的索引,第二个列表为行的索引,第三个为列的索引
   array([ 9, 24])  

ブールインデックス

構文:配列名[条件式]

例:

   >>> a = np.arange(1, 25).reshape(4,6)
   >>> a
   array([[ 1,  2,  3,  4,  5,  6],
          [ 7,  8,  9, 10, 11, 12],
          [13, 14, 15, 16, 17, 18],
          [19, 20, 21, 22, 23, 24]])
   >>> a[a>10] # 布尔索引将满足条件的筛选出来,返回一维数组
   array([11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]) 

おすすめ

転載: blog.csdn.net/shield911/article/details/124109381