(N-1) 次元配列を使用して N 次元配列に効率的にアクセスするにはどうすればよいですか?
Oct 21, 2024 am 11:57 AM(N-1) 次元配列を使用して N 次元配列にアクセスする
N 次元配列 a と (N- 1) 次元配列 idx の場合、一般的なタスクは、idx のインデックスで指定された要素にアクセスすることです。これは、最大値の検索や特定の値の取得などの操作を実行する場合に役立ちます。
高度なインデックス作成を使用したエレガントなソリューション
エレガントなソリューションには、NumPy の ogrid 関数による高度なインデックス作成の使用が含まれます。 :
<code class="python">m, n = a.shape[1:] I, J = np.ogrid[:m, :n] a_max_values = a[idx, I, J] b_max_values = b[idx, I, J]</code>
ログイン後にコピー
これにより、インデックスのメッシュグリッドが作成され、それを使用して a と b にインデックスが付けられ、対応する値を含む配列が得られます。
関数を使用した一般的なケース
任意の指定された軸に対して機能する、より一般的な解決策として、関数を定義できます。
<code class="python">def argmax_to_max(arr, argmax, axis): new_shape = list(arr.shape) del new_shape[axis] grid = np.ogrid[tuple(map(slice, new_shape))] grid.insert(axis, argmax) return arr[tuple(grid)]</code>
ログイン後にコピー
この関数は、配列、指定された軸に沿ったその argmax、および軸自体を受け取ります。 。次に、メッシュグリッドを構築し、それを使用して対応する要素を抽出します。
カスタム関数による簡素化されたインデックス作成
インデックス作成プロセスをさらに簡略化するために、ヘルパー関数を作成できます。インデックスのグリッドを生成します:
<code class="python">def all_idx(idx, axis): grid = np.ogrid[tuple(map(slice, idx.shape))] grid.insert(axis, idx) return tuple(grid)</code>
ログイン後にコピー
この関数は、入力配列にインデックスを付けるために直接使用できるインデックスのタプルを返します:
<code class="python">axis = 0 a_max_values = a[all_idx(idx, axis=axis)] b_max_values = b[all_idx(idx, axis=axis)]</code>
ログイン後にコピー
以上が(N-1) 次元配列を使用して N 次元配列に効率的にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7281
9


Java チュートリアル
1622
14


CakePHP チュートリアル
1342
46


Laravel チュートリアル
1258
25


PHP チュートリアル
1205
29

