これは、質問と本から例の発信元と思われるデータ分析のためのPythonウェス・マッキニーによると。この機能についてtranspose
は、第4.1章で説明しています。配列の転置と軸の交換。
高次元の配列の場合、transpose
は軸番号のタプルを受け入れて軸を並べ替えます(余分な心の曲がりのため)。
ここで、「順列」は「再配置」を意味するため、軸の順序を再配置します。
の数字は.transpose(1, 0, 2)
、元の軸と比較して軸の順序がどのように変更されるかを決定します。を使用.transpose(1, 0, 2)
すると、「1番目の斧を2番目の斧に変更する」という意味になります。を使用する.transpose(0, 1, 2)
と、変更するものがないため、配列は同じままになります。これがデフォルトの順序です。
(2, 2, 4)
サイズが配列された本の例は、1番目と2番目の軸のサイズが同じであるため、あまり明確ではありません。したがって、行arr[0, 1]
との並べ替えを除いて、最終結果は変わらないようですarr[1, 0]
。
各次元のサイズが異なる3次元配列で別の例を試してみると、再配置部分がより明確になります。
In [2]: x = np.arange(24).reshape(2, 3, 4)
In [3]: x
Out[3]:
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]]])
In [4]: x.transpose(1, 0, 2)
Out[4]:
array([[[ 0, 1, 2, 3],
[12, 13, 14, 15]],
[[ 4, 5, 6, 7],
[16, 17, 18, 19]],
[[ 8, 9, 10, 11],
[20, 21, 22, 23]]])
ここで、元の配列サイズは(2, 3, 4)
です。1枚目と2枚目を変更したので(3, 2, 4)
サイズになります。再配置がどのように正確に行われたかを詳しく見ると、数字の配列は特定のパターンで変化したようです。@ RobertBの紙の例えを使用して、2つのチャンクの数値を取得し、それぞれをシートに書き込んでから、各シートから1行を取得して配列の1次元を構築すると、3x2x4サイズの配列になります。 、最外層から最内層まで数えます。
[ 0, 1, 2, 3] \ [12, 13, 14, 15]
[ 4, 5, 6, 7] \ [16, 17, 18, 19]
[ 8, 9, 10, 11] \ [20, 21, 22, 23]
さまざまなサイズの配列で遊んで、さまざまな軸を変更して、それがどのように機能するかをよりよく理解することをお勧めします。