[解決済み】np.unravel_indexの直感的な説明とは?
質問
タイトルの通りなんですが ドキュメントを読み、しばらくこの機能で遊んでみましたが、この変換の物理的な表れが何であるかがわかりません。
どのように解決するのか?
コンピュータのメモリは線形にアドレス指定されています。各メモリセルは数字に対応しています。メモリのブロックは、その最初の要素のメモリアドレスであるベースと、アイテムのインデックスでアドレス指定することができます。例えば、ベースアドレスが10,000であると仮定します。
item index 0 1 2 3
memory address 10,000 10,001 10,002 10,003
多次元ブロックを格納するためには、その形状を何とかしてリニアメモリに収まるようにしなければなりません。そこで
C
と
NumPy
これは行ごとに行われます。2Dの例は次のようになります。
| 0 1 2 3
--+------------------------
0 | 0 1 2 3
1 | 4 5 6 7
2 | 8 9 10 11
つまり、例えばこの3×4ブロックでは、2Dインデックス
(1, 2)
は線形インデックスに対応する
6
というのは
1 x 4 + 2
.
unravel_index
はその逆を行う。線形インデックスが与えられると、それに対応する
ND
のインデックスを表示します。これはブロックの寸法に依存するので、ブロックの寸法も渡さなければならない。つまり、この例では、元の2次元インデックスを得ることができます。
(1, 2)
リニアインデックスから
6
:
>>> np.unravel_index(6, (3, 4))
(1, 2)
注:上記はいくつかの詳細について説明している。1) アイテムインデックスをメモリアドレスに変換する際、アイテムのサイズも考慮しなければならない。例えば、整数は通常4バイトまたは8バイトである。したがって、後者の場合、項目のメモリアドレスは
i
は次のようになります。
base + 8 x i
. 2). NumPy は提案されたよりも少し柔軟です。それは
ND
のデータを、必要であれば列単位で表示します。メモリ上で連続していないデータでも、例えば隙間を空けて処理することができる。
ボーナス読み物 ndarrayの内部メモリレイアウト
関連
-
PicgoのイメージベッドツールをPythonで実装する
-
Python カメの描画コマンドとその例
-
[解決済み】なぜ「LinAlgError: Grangercausalitytestsから「Singular matrix」と表示されるのはなぜですか?
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] バイトを文字列に変換する
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] モジュールの関数名(文字列)を使って、モジュールの関数を呼び出す。
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
PicgoのイメージベッドツールをPythonで実装する
-
Python カメの描画コマンドとその例
-
Python jiabaライブラリの使用方法について説明
-
python implement mysql add delete check change サンプルコード
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
[解決済み】RuntimeWarning: 割り算で無効な値が発生しました。
-
[解決済み】ImportError: PILという名前のモジュールがない
-
[解決済み】終了コード -1073741515 (0xC0000135)でプロセス終了)
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。