NumPy を使用したストライド付きのサブ配列の抽出
NumPy 配列が与えられた場合、多くの場合、それを特定のストライドを持つサブ配列に分割する必要があります。この質問では、ブロードキャストと NumPy ストライドを使用してこれを効率的に実現する方法を検討します。
解決策 1: ブロードキャスト
broadcast_app 関数はブロードキャストを使用して、必要なサブ配列を構築します。配列のサイズ、部分配列の長さ、およびストライドに基づいて行数が計算されます。次に、ブロードキャストを使用して、各行がサブ配列を表す新しい配列を作成します。
解決策 2: NumPy ストライド
strided_app 関数は、NumPy の効率的なストライド処理メカニズムを利用します。以前と同様に行数とストライド数が計算されます。次に、as_strided 関数を利用して、目的のストライドと形状を持つ新しい配列を作成します。
使用例
これらのソリューションを説明するには、次の Python を検討してください。コード:
import numpy as np a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) L = 5 # Subarray length S = 3 # Stride print(broadcasting_app(a, L, S)) print(strided_app(a, L, S))
出力:
[[ 1 2 3 4 5] [ 4 5 6 7 8] [ 7 8 9 10 11]] [[ 1 2 3 4 5] [ 4 5 6 7 8] [ 7 8 9 10 11]]
両方のアプローチにより、目的の部分配列行列が効率的に生成されます。
以上がNumPy で特定のストライドを持つ部分配列を効率的に抽出する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。