ホームページ  >  記事  >  バックエンド開発  >  3次元配列を転置するためのnumpy.transposeメソッド

3次元配列を転置するためのnumpy.transposeメソッド

不言
不言オリジナル
2018-04-17 15:33:003901ブラウズ

以下は numpy.transpose の 3 次元配列の転置方法に関する記事です。非常に参考になるので、皆さんの参考になれば幸いです。見てみましょう

以下に示すように: 、2) 、 の配列

import numpy as np

なぜ、tanspose (1, 0, 2) と入力した後、配列は

arr1 = np.arange(16).reshape((2, 2, 4)) 
#[[[ 0 1 2 3] 
# [ 4 5 6 7]] 
 
# [[ 8 9 10 11] 
# [12 13 14 15]]] 
 
arr2=arr1.transpose((1,0,2)) 
#[[[ 0 1 2 3] 
# [ 8 9 10 11]] 
# 
# [[ 4 5 6 7] 
# [12 13 14 15]]]

になるのですか、注意深く観察すると、転置後の配列と転置前の配列は 1ページ目の2行目と2ページ目の1行目が入れ替わっているのですがなぜでしょうか?

arr1[0,1,0]を使用した場合、インデックス値は4になります

arr2[1,0,0]を使用した場合、インデックス値は4になります

変化と正の順序を比較してくださいインデックス パラメーター テーブルの転置順序の違いと何らかの関係があるようです

arr1 配列の場合、インデックス パラメーター テーブル [0, 0, x] は、現在の 2 つのパラメーターの後の最初のページの最初の行を表すことができます。交換され、同じ要素のインデックス パラメータ テーブルは変更されていません

つまり、arr2 の最初のページの最初の行は、arr1 の最初のページの最初の行と同じです

arr1 配列の場合、インデックス パラメータtable [0, 1, x] は、最初のページの 2 行目を表すことができます。現在の 2 つのパラメーターが交換された後、[0, 1, 0] などの同じ要素のインデックス値は [1, 0, 0] になります。 ,

これは、インデックス値 4 のインデックス パラメーター テーブルの違いを説明しています

これは大まかな考え方です。つまり、配列の最初のページの 2 行目である transpose(1,0,2) と、 2ページ目の1行目が入れ替えられます

以下の4つの転置方法もほぼ同じ考え方です、よく観察してください、理解するのは難しいことではありません

#[[[ 0 1 2 3] 
# [ 4 5 6 7]] 
 
# [[ 8 9 10 11] 
# [12 13 14 15]]]

ここで注目すべきは、arr4配列は次のようになるということです4ページというのは、ページ番号と行コードを入れ替えると

ページ番号が2から4

になり、2になったからです。

#[[[ 0 1 2 3] 
# [ 8 9 10 11]] 
# 
# [[ 4 5 6 7] 
# [12 13 14 15]]]

さらに、transpose (2, 0, 1)は、transpose (0, 2, 1)を最初にtranspose (1, 0, 2)とみなすことができます

Transpose (2, 1, 0)最初に (1, 0, 2) を転置し、次に (0, 2, 1) を転置し、最後に (1, 0, 2) を転置すると見ることができます

(1, 2, 0) を転置すると、転置すると見ることができます(1, 0, 2) を最初に転置し、次に (0, 2, 1) を転置します

コードは次のように記述できます

arr3=arr1.transpose((0,2,1)) 
 
# [[[ 0 4] 
# [ 1 5] 
# [ 2 6] 
# [ 3 7]] 
# 
# [[ 8 12] 
# [ 9 13] 
# [10 14] 
# [11 15]]] 
 
arr4=arr1.transpose((2,0,1)) 
#[[[ 0 4] 
# [ 8 12]] 
# 
# [[ 1 5] 
# [ 9 13]] 
# 
# [[ 2 6] 
# [10 14]] 
# 
# [[ 3 7] 
# [11 15]]]

arr5=arr1.transpose((2,1,0)) 
#[[[ 0 8] 
# [ 4 12]] 
# 
# [[ 1 9] 
# [ 5 13]] 
# 
# [[ 2 10] 
# [ 6 14]] 
# 
# [[ 3 11] 
# [ 7 15]]] 
 
arr6=arr1.transpose((1,2,0)) 
#[[[ 0 8] 
# [ 1 9] 
# [ 2 10] 
# [ 3 11]] 
# 
# [[ 4 12] 
# [ 5 13] 
# [ 6 14] 
# [ 7 15]]]

同じ結果です!

関連する推奨事項:

numpy の array と asarray の違い

numpy でブール配列を処理する方法

以上が3次元配列を転置するためのnumpy.transposeメソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。