[解決済み] numpy.swapaxesはどのように動作するのですか?
質問
サンプル配列を作成しました。
a = np.arange(18).reshape(9,2)
印刷すると、このように出力されます。
[[ 0 1]
[ 2 3]
[ 4 5]
[ 6 7]
[ 8 9]
[10 11]
[12 13]
[14 15]
[16 17]]
このリシェイプの実行に際して。
b = a.reshape(2,3,3).swapaxes(0,2)
得ることができる。
[[[ 0 9]
[ 3 12]
[ 6 15]]
[[ 1 10]
[ 4 13]
[ 7 16]]
[[ 2 11]
[ 5 14]
[ 8 17]]]
私はこの質問を通り抜けたが、それは私の問題を解決していない。
ドキュメントも役に立ちません。
https://docs.scipy.org/doc/numpy/reference/generated/numpy.swapaxes.html
スワッピングの仕組み(X軸、Y軸、Z軸)を知りたいのですが。図解で説明していただけると助かります。
どのように解決するのですか?
リシェイプから始める
In [322]: a = np.arange(18).reshape(2,3,3)
In [323]: a
Out[323]:
array([[[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8]],
[[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17]]])
これは2つの平面として表示され、それぞれの平面は3x3です。 その部分は明確ですか? 配列が一時期(9,2)の形をしていたことは、あまり意味がないんです。 形を変えても要素の順番は変わりません。
を適用します。
swapaxes
. 形状は(3,3,2)になりました。 3つの平面、それぞれは3x2です。 この特定の入れ替えは、転置と同じである
np.arange(18).reshape(2,3,3).transpose(2,1,0)
中軸は変化なし。 0,3,6]、[9,12,15]などの列が残っています。
大きさの違う3つの軸で変化を視覚化するとわかりやすいかもしれませんね
In [335]: a=np.arange(2*3*4).reshape(2,3,4)
In [336]: a
Out[336]:
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 [337]: a.swapaxes(0,2)
Out[337]:
array([[[ 0, 12],
[ 4, 16],
[ 8, 20]],
[[ 1, 13],
[ 5, 17],
[ 9, 21]],
[[ 2, 14],
[ 6, 18],
[10, 22]],
[[ 3, 15],
[ 7, 19],
[11, 23]]])
配列を平らにするとどうなるか、注目してください。
In [338]: a.swapaxes(0,2).ravel()
Out[338]:
array([ 0, 12, 4, 16, 8, 20, 1, 13, 5, 17, 9, 21, 2, 14, 6, 18, 10,
22, 3, 15, 7, 19, 11, 23])
は、用語の順番を入れ替えたものです。 作成時は[0,1,2,3...]でした。 現在では
1
は6番目の項(2x3)です。
カバーの下
numpy
を変更することで、スワップまたはトランスポーズを実行します。
shape
,
strides
と
order
データバッファを変更することなく(つまり、ビューである)。 しかし、ラベリングを含むさらなるリシェイプは、コピーを作成することを余儀なくされます。 しかし、それは現段階では役に立つというより、混乱させるかもしれません。
で
numpy
軸には番号が振られています。 x,y,zやplanes, rows, columnsといった用語は、それらを視覚化できるような構成にマッピングするのに役立つかもしれませんが、「ビルトイン」ではないのです。 スワップやトランスポーズを言葉で表現するのは難しい。
関連
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】Python regex AttributeError: 'NoneType' オブジェクトに 'group' 属性がない。
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PythonによるLeNetネットワークモデルの学習と予測
-
Python関数の高度な応用を解説
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
Pythonの@decoratorsについてまとめてみました。
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み】ilocが「IndexError: single positional indexer is out-of-bounds」を出す。
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み】SyntaxError: デフォルト以外の引数がデフォルトの引数に続く
-
[解決済み】ImportError: bs4という名前のモジュールがない(BeautifulSoup)