Starfruit Python Advanced Lecture 17配列配列(7)3次元配列とn次元配列のインデックスと値(詳細図付き)

私のCSDNブログの列:https://blog.csdn.net/yty_7

Githubアドレス:https://github.com/yot777/

 

3次元配列のインデックスと値

次のように、派手な3次元配列zを作成します。

>>> import numpy as np
>>> z=np.array([[[1,2,3,4],[5,6,7,8]],[[9,10,11,12],[13,14,15,16]]])
>>> print(z)
[[[ 1  2  3  4]
  [ 5  6  7  8]]

 [[ 9 10 11 12]
  [13 14 15 16]]]

3次元配列には行列の行と列の概念はありませんが、shape()関数を使用してその次元情報を表示できます。

>>> np.shape(z)
(2, 2, 4)

三次元配列zの次元は(2、2、4)ですが、理解するのは非常に困難です!

実際、(2、2、4)(2、(2、4))に変換すると、つまり2つの(2、4)行列が3次元配列になります。

次のように例示であると理解3次元配列 zは2番目の行列の平面において(2,4)構成

次のように、2次元配列のインデックスメソッドを引き続き使用して、3次元配列を表示します。

[]が数字または単一のコロン始まる場合、それはマトリックス平面のすべての要素を取ることを意味します。次に例を示します。

>>> z[0]             #取第0个矩阵平面的元素
array([[1, 2, 3, 4],
       [5, 6, 7, 8]])
>>> z[1]             #取第1个矩阵平面的元素
array([[ 9, 10, 11, 12],
       [13, 14, 15, 16]])
>>> z[:1]            #取从0开始到1-1=0个矩阵平面的元素
array([[[1, 2, 3, 4],
        [5, 6, 7, 8]]])

アイコン:

もし[]内結腸コンマ(すなわち)初めに、撮影を表す行列面線要素を、例えば、:

>>> z[:,0]       #取所有矩阵平面的第0行
array([[ 1,  2,  3,  4],
       [ 9, 10, 11, 12]])
>>> z[:,1]       #取所有矩阵平面的第1行
array([[ 5,  6,  7,  8],
       [13, 14, 15, 16]])

アイコン:

指定するものと解釈マトリクス平面使用して、[行列面番号] [行番号]表現を

指定するものと解釈マトリクス平面カラムを使用して、[平面行列数]を[列番号:]表わさ

例:

>>> z[0][1]          #取第0个矩阵平面的第1行
array([5, 6, 7, 8])
>>> z[1][0]          #取第1个矩阵平面的第0行
array([ 9, 10, 11, 12])
>>> z[0][:,2]        #取第0个矩阵平面的第2列
array([3, 7])   
>>> z[1][:,3]        #取第1个矩阵平面的第3列
array([12, 16])

アイコン:

もし[]内の2つのコンマのコロン(すなわち、:、:、 初めに、撮影を表す行列面列要素を、例えば、:

>>> z[:,:,0]         #取所有矩阵平面的第0列
array([[ 1,  5],
       [ 9, 13]])
>>> z[:,:,2]         #取所有矩阵平面的第2列
array([[ 3,  7],
       [11, 15]])

アイコン:

3次元配列の特定の要素を取り、それを表すために[行列平面番号] [行番号] [列番号]を使用します。次に例を示します。

>>> z[0][1][2]     #取第0个矩阵平面第1行第2列的数据
7
>>> z[1][1][1]     #取第1个矩阵平面第1行第1列的数据
14

アイコン:

n次元配列のインデックスと値

3次元以上のn次元配列の場合、直感的な方法でグラフィックを描画することは困難ですが、インデックスと値については3次元配列の原則に従うことができます。

n次元配列の形状は、次のように表すことができます。

右端の x1は1次元(要素が最終的に格納される場所)、x21次元要素の数x32次元要素の数...左端のxnはn-1次元要素の数です。

例:

(6,2,7,3,4)は、1次元に4つの要素、2次元に3つの1次元要素、3次元に7つの2次元要素、4次元要素を持つ5次元配列sです。 2つの3次元要素の数、5次元には6つの4次元要素、要素の総数は4 * 3 * 7 * 2 * 6 = 1008

次に、s [a]が角括弧のペアのみを持つ場合、s [0]からs [5]までの範囲の合計6つの要素があります。

s [a] [b]にブラケットのペアが2つある場合、s [0] [0]からs [0] [1]までの合計6 * 2 = 12要素、次にs [1] [ 0]からs [1] [1] ... s [5] [0]からs [5] [1]まで

s [a] [b] [c]に3組のブラケットがある場合、合計6 * 2 * 7 = 84要素、s [0] [0] [0]からs [0] [0] [ 6]、次にs [0] [1] [0]からs [0] [1] [6]まで、

s [1] [0] [0]からs [5] [1] [6]

……

したがって、複数のループを使用して、5次元配列sの要素を最も内側の層から最も外側の層までトラバースできます。

第1レベルのループ:s [0] [0] [0] [0] [ 0 ]からs [0] [0] [0] [0] [ 3 ](4ループ)

第2層ループ:s [0] [0] [0] [ 0 ] [0]からs [0] [0] [0] [ 2] [3](3サイクル)

第3レベルのループ:s [0] [0] [ 0 ] [0] [0]からs [0] [0] [ 6 ] [2] [3](7ループ)

第4レベルのループ:s [0] [ 0 ] [0] [0] [0]からs [0] [ 1 ] [6] [2] [3](2ループ)

第5サイクル:s [ 0 ] [0] [0] [0] [0]からs [ 5 ] [1] [6] [2] [3](6サイクル)

走査中、ループの各層はループの次の層の対応する数を実行する必要があるため、合計で6 * 2 * 7 * 3 * 4 = 1008サイクルになります。

 

まとめ

三次元アレイがある複数の二次元平面のマトリックス構成

[]が数字または単一のコロン始まる場合、それは行列平面のすべての要素を取得することを意味します

[]がコロンコンマ(つまり:、)で始まる場合、これは行列平面の行要素を取得することを意味します

指定するものと解釈マトリクス平面使用して、[行列面番号] [行番号]表現を

指定するものと解釈マトリクス平面カラムを使用して、[平面行列数]を[列番号:]表わさ

[]内の場合に2つのコンマのコロン(すなわち、:、:、 初めに、撮影を表す行列面列要素を

3次元配列の特定の要素を取り、[行列平面番号] [行番号] [列番号]を使用して表現します

n次元配列の形状は、次のように表すことができます。

右端の x1は1次元(要素が最終的に格納される場所)、x21次元要素の数x32次元要素の数...左端のxnはn-1次元要素の数です。

n次元配列をトラバースする場合、ループの各層は次の層の対応するサイクル数を実行する必要があるため、合計でxn * xn-1 * ...... * x3 * x2 * x1サイクルになります。

 

私のCSDNブログの列:https://blog.csdn.net/yty_7

Githubアドレス:https://github.com/yot777/

この章があなたに役立つと思うなら、フォローして、コメントして、いいね!Githubはあなたのフォローとスターを歓迎します!

公開された55元の記事 ウォン称賛16 ビュー6111

おすすめ

転載: blog.csdn.net/yty_7/article/details/104702256