高度なインデックス作成を使用して行列の行を個別にローリングするにはどうすればよいですか?

Susan Sarandon
リリース: 2024-10-21 14:11:30
オリジナル
672 人が閲覧しました

How to Roll Matrix Rows Independently Using Advanced Indexing?

高度なインデックス作成による行列行の独立したローリング

データ操作の領域では、多くの場合、多次元配列に対して複雑な操作を実行する必要があります。このようなシナリオの 1 つは、指定されたシフト値に基づいて行列の行を個別にローリングすることです。

入力行列 A とシフト値 r の配列が与えられた場合、タスクは A の各行にロール演算を適用することです。 r からの対応するシフトを使用します。望ましい結果は次のとおりです。

[[0 0 4]
 [1 2 3]
 [0 5 0]]
ログイン後にコピー

高度なインデックス作成は、この課題に対する洗練されたソリューションを提供します。負のシフト値と高度な配列スライス手法を活用することで、次のようにロール操作を効率的に実装できます。

<code class="python">rows, column_indices = np.ogrid[:A.shape[0], :A.shape[1]]

# Always use a negative shift, so that column_indices are valid.
# Alternative: r %= A.shape[1]
r[r < 0] += A.shape[1]
column_indices = column_indices - r[:, np.newaxis]

result = A[rows, column_indices]</code>
ログイン後にコピー

このアプローチでは、ogrid は A の行と列に対応するインデックスのグリッドを生成します。負のシフト値に基づいて列インデックスを操作すると、ロール操作が各行に効果的に適用されます。この方法は、行列の行を個別にローリングするための非常に効率的なソリューションを提供し、ループの必要性を回避します。

以上が高度なインデックス作成を使用して行列の行を個別にローリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!