ホームページ > バックエンド開発 > Python チュートリアル > より少ない次元で多次元配列にアクセスするにはどうすればよいですか?

より少ない次元で多次元配列にアクセスするにはどうすればよいですか?

Linda Hamilton
リリース: 2024-10-21 11:32:02
オリジナル
954 人が閲覧しました

How to Access Multidimensional Arrays with Fewer Dimensions?

より少ない次元での多次元配列へのアクセス

a や (n-1) 次元などの n 次元配列を考えてみましょう配列、idx。特定の次元に沿って idx を使用して a にアクセスするには、高度なインデックス付けを使用できます。

3 次元配列 a の場合、次のように idx を使用して最初の次元に沿った最大値を計算できます。

<code class="python">m, n = a.shape[1:]
I, J = np.ogrid[:m, :n]
a_max_values = a[idx, I, J]</code>
ログイン後にコピー

このアプローチは、任意の次元数の配列に対して一般化できます。

<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>
ログイン後にコピー

n 次元配列に (n-1) 次元配列のインデックスを付けるには、次のグリッドを作成できます。すべての軸のインデックス:

<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">a_max_values = a[all_idx(idx, axis=axis)]
b_max_values = b[all_idx(idx, axis=axis)]</code>
ログイン後にコピー

このアプローチは、より少ない次元で多次元配列にアクセスするための洗練されたソリューションを提供します。

以上がより少ない次元で多次元配列にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート