ホームページ >バックエンド開発 >Python チュートリアル >NumPy で高度なインデックス作成を使用して行列行の独立したローリングを実行するにはどうすればよいですか?
高度なインデックス作成を使用して行列行を個別にローリングする
行列 A と、各行のロール値を含む配列 r が与えられた場合、目標は次のとおりです。これらのロール値を使用して A の各行を個別にロールします。
これを達成するための最も効率的なアプローチは、NumPy の高度なインデックス作成を使用することです。この手法には、A の列にロール値を適用する新しいメッシュグリッドの構築が含まれます。実装方法は次のとおりです。
<code class="python">import numpy as np # Define the matrix A and roll values r A = np.array([[4, 0, 0], [1, 2, 3], [0, 0, 5]]) r = np.array([2, 0, -1]) # Create a meshgrid of rows and negative shifted columns rows, column_indices = np.ogrid[:A.shape[0], :A.shape[1]] r[r < 0] += A.shape[1] column_indices = column_indices - r[:, np.newaxis] # Use advanced indexing to apply the roll values result = A[rows, column_indices] # Print the result print(result)</code>
この手法では、負にシフトされた列インデックスを使用して有効なインデックスを確保し、ロール値を適用します。メッシュグリッドを通過し、独立してローリングされた行列が生成されます。
以上がNumPy で高度なインデックス作成を使用して行列行の独立したローリングを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。