Numpyを使用した多次元配列によるスライス/インデックス作成

ハムザ・イブラヒム

私は3つの4x4配列(行列)を作成しました: arr=np.linspace(1,48,48).reshape(3,4,4)

行列は次のように表示されます。`

[[[ 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.]]]`

特定の出力を取得するためにインデックス作成/スプライシングを実行したいと思います。例:

[[36. 35.] [40. 39.] [44. 43.] [48. 47.]]

[[13. 9. 5. 1.] [29. 25. 21. 17.] [45. 41. 37. 33.]]


[[25. 26. 27. 28.], [29. 30. 31. 32.], [33. 34. 35. 36.], [37. 38. 39. 40.]]

4*. [[1. 4.] [45. 48.]]

私はそれにどのようにアプローチするかについて正確に苦労しています。特定のマトリックスを操作するとき、私はそのマトリックスにアクセスし、そこからスプライス/インデックスを作成しようとしました。たとえば、出力[[36。35。] [40。39。] [44。43。] [48。47.]]は3番目のマトリックスにあります。私はこのようにマトリックスにアクセスしますmatrix3 = arr[array([2])]

現在、私は3番目のマトリックスの行と列のみを操作しており、正しくスライスするのが難しいと感じています。matrix3[::-1,::-1]列と行の両方を反転する必要がありますか?はいの場合、これはそれにアプローチするための最良の方法ですか?代わりに、reshapeを使用する必要があり、3つの4x4配列すべてでreshapeを使用する必要がありますか、それとも操作するマトリックスにアクセスしてからreshapeを使用する必要がありますか?

編集:4を追加しました。

hpaulj

最初の結果を段階的に抽出します。

In [53]: arr[2,:,:]            # the desired plane
Out[53]: 
array([[33, 34, 35, 36],
       [37, 38, 39, 40],
       [41, 42, 43, 44],
       [45, 46, 47, 48]])
In [54]: arr[2,:,2:]          # the desired columns
Out[54]: 
array([[35, 36],
       [39, 40],
       [43, 44],
       [47, 48]])
In [55]: arr[2,:,:1:-1]        # the reversed order
Out[55]: 
array([[36, 35],
       [40, 39],
       [44, 43],
       [48, 47]])

または、簡単な場合は、別の手順として逆に実行します。

In [56]: arr[2,:,2:][:,::-1]
Out[56]: 
array([[36, 35],
       [40, 39],
       [44, 43],
       [48, 47]])

2位

In [57]: arr[:,:,0]          # select column
Out[57]: 
array([[ 1,  5,  9, 13],
       [17, 21, 25, 29],
       [33, 37, 41, 45]])
In [58]: arr[:,::-1,0]        # reverse
Out[58]: 
array([[13,  9,  5,  1],
       [29, 25, 21, 17],
       [45, 41, 37, 33]])
In [59]: arr[:,::-1,0].T      # transpose
Out[59]: 
array([[13, 29, 45],
       [ 9, 25, 41],
       [ 5, 21, 37],
       [ 1, 17, 33]])

3位

これは少し注意が必要です。1つの平面に最後の2行、別の平面に最初の2行が必要です。私たちはペアリング、正しい形状にブロードキャストするインデックスのペアが必要であることを取得する1[2,3]など

In [61]: arr[[[1],[2]],[[2,3],[0,1]],:]
Out[61]: 
array([[[25, 26, 27, 28],
        [29, 30, 31, 32]],

       [[33, 34, 35, 36],
        [37, 38, 39, 40]]])

これは3Dマトリックスです。それを2Dに減らす1つの方法は、連結することです。

In [63]: np.concatenate(arr[[[1],[2]],[[2,3],[0,1]],:],axis=0)
Out[63]: 
array([[25, 26, 27, 28],
       [29, 30, 31, 32],
       [33, 34, 35, 36],
       [37, 38, 39, 40]])

形状変更も同様に機能します。

In [65]: arr[[[1],[2]],[[2,3],[0,1]],:].reshape(4,4)
Out[65]: 
array([[25, 26, 27, 28],
       [29, 30, 31, 32],
       [33, 34, 35, 36],
       [37, 38, 39, 40]])

また arr.reshape(3,2,2,4)[[1,2],[1,0],:].reshape(4,4)


これらのインデックス式は、スライスを含むタプルとして記述できます。例:

In [66]: idx = (2, slice(None), slice(None,1,-1))
In [67]: arr[idx]
Out[67]: 
array([[36, 35],
       [40, 39],
       [44, 43],
       [48, 47]])

したがって、一般的なツールには、インデックス作成(スライス、スカラー、リストを使用)、反転(-1ステップ)、転置(またはスワップ軸)、および再形成が含まれます。これらの1つだけですべてを行うことはできません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

インデックス配列からのインデックスのタプルを使用した多次元配列のインデックス作成-NumPy / Python

分類Dev

numpyで間接インデックスを使用して多次元配列を合計するための高速な方法

分類Dev

numpy多次元配列インデックス

分類Dev

Pythonで1次元配列を使用した多次元配列のインデックス作成

分類Dev

自動インデックスを使用してループ内に多次元配列を作成する

分類Dev

負のインデックスを使用した多次元配列アクセス

分類Dev

Numpyを使用した多次元インデックス作成

分類Dev

Rで多次元配列のnumpyのようなインデックスを作成する方法はありますか?

分類Dev

多次元配列でのnumpyの高度なインデックス作成

分類Dev

NaNを含むインデックス配列を使用したnumpy設定の多次元配列

分類Dev

numpy多次元配列のインデックス付けはスライス方法に依存します

分類Dev

多次元配列に部分的にインデックスを付ける

分類Dev

インデックスを使用したJavascriptソート多次元配列

分類Dev

1つの軸に沿って適用されるargminインデックスを使用した多次元配列のインデックス付け

分類Dev

NumPy:多次元配列の最大値のインデックスを取得する方法

分類Dev

多次元配列から、インデックスの行列によって指定されたNumpy選択行列

分類Dev

numpyの別の多次元配列のインデックスの2D配列から多次元配列を作成します

分類Dev

多次元配列の値を使用して配列のインデックスを再作成します

分類Dev

np.argpartition を使用して多次元配列の値にインデックスを付ける

分類Dev

PHPを使用して多次元配列の特定のインデックスの値の合計を取得するには?

分類Dev

numpy / pytorchの多次元配列のインデックスのリストでインデックスを作成する方法

分類Dev

インデックス配列を使用した多次元numpy配列のインデックス付け

分類Dev

Numpyの多次元配列の繰り返しインデックス位置に値を追加するにはどうすればよいですか?

分類Dev

多次元配列のインデックスマスクとして配列を使用する

分類Dev

1次元インデックスを使用した多次元配列へのアクセス

分類Dev

PytorchやNumpyを使用して行列の多次元配列の最大値のインデックスを効率的に見つける方法

分類Dev

Numpy:インデックスのリストを使用して2次元配列に値を割り当てる

分類Dev

多次元配列をインデックスで並べ替える

分類Dev

多次元配列PHPのインデックスを変更する

Related 関連記事

  1. 1

    インデックス配列からのインデックスのタプルを使用した多次元配列のインデックス作成-NumPy / Python

  2. 2

    numpyで間接インデックスを使用して多次元配列を合計するための高速な方法

  3. 3

    numpy多次元配列インデックス

  4. 4

    Pythonで1次元配列を使用した多次元配列のインデックス作成

  5. 5

    自動インデックスを使用してループ内に多次元配列を作成する

  6. 6

    負のインデックスを使用した多次元配列アクセス

  7. 7

    Numpyを使用した多次元インデックス作成

  8. 8

    Rで多次元配列のnumpyのようなインデックスを作成する方法はありますか?

  9. 9

    多次元配列でのnumpyの高度なインデックス作成

  10. 10

    NaNを含むインデックス配列を使用したnumpy設定の多次元配列

  11. 11

    numpy多次元配列のインデックス付けはスライス方法に依存します

  12. 12

    多次元配列に部分的にインデックスを付ける

  13. 13

    インデックスを使用したJavascriptソート多次元配列

  14. 14

    1つの軸に沿って適用されるargminインデックスを使用した多次元配列のインデックス付け

  15. 15

    NumPy:多次元配列の最大値のインデックスを取得する方法

  16. 16

    多次元配列から、インデックスの行列によって指定されたNumpy選択行列

  17. 17

    numpyの別の多次元配列のインデックスの2D配列から多次元配列を作成します

  18. 18

    多次元配列の値を使用して配列のインデックスを再作成します

  19. 19

    np.argpartition を使用して多次元配列の値にインデックスを付ける

  20. 20

    PHPを使用して多次元配列の特定のインデックスの値の合計を取得するには?

  21. 21

    numpy / pytorchの多次元配列のインデックスのリストでインデックスを作成する方法

  22. 22

    インデックス配列を使用した多次元numpy配列のインデックス付け

  23. 23

    Numpyの多次元配列の繰り返しインデックス位置に値を追加するにはどうすればよいですか?

  24. 24

    多次元配列のインデックスマスクとして配列を使用する

  25. 25

    1次元インデックスを使用した多次元配列へのアクセス

  26. 26

    PytorchやNumpyを使用して行列の多次元配列の最大値のインデックスを効率的に見つける方法

  27. 27

    Numpy:インデックスのリストを使用して2次元配列に値を割り当てる

  28. 28

    多次元配列をインデックスで並べ替える

  29. 29

    多次元配列PHPのインデックスを変更する

ホットタグ

アーカイブ