ホームページ >バックエンド開発 >Python チュートリアル >NumPy 配列からストライドを使用してサブ配列を効率的に作成する方法

NumPy 配列からストライドを使用してサブ配列を効率的に作成する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-12-02 18:18:11990ブラウズ

How to Efficiently Create Subarrays from a NumPy Array with a Stride?

ストライド/ステップサイズを使用して Numpy 配列から部分配列を取得する

このコンテキストでは、Python NumPy で部分配列を作成する効率的なアプローチについて説明します。特定のストライドを持つ指定された配列。

これを実現するには、次のように探索します。 2 つの方法:

1.ブロードキャスト アプローチ:

def broadcasting_app(a, L, S):
    nrows = ((a.size - L) // S) + 1
    return a[S * np.arange(nrows)[:, None] + np.arange(L)]

この方法では、ブロードキャストを使用してストライドの行列を作成します。

2.効率的な NumPy ストライドのアプローチ:

def strided_app(a, L, S):
    nrows = ((a.size - L) // S) + 1
    n = a.strides[0]
    return np.lib.stride_tricks.as_strided(a, shape=(nrows, L), strides=(S * n, n))

このメソッドは、NumPy の効率的なストライドを利用して部分配列行列を作成します。

例:

を検討してください配列a:

a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])

ストライド 3 で長さ 5 の部分配列を作成するには、次のいずれかの方法を使用できます。

subarrays_broadcasting = broadcasting_app(a, L=5, S=3)
subarrays_strides = strided_app(a, L=5, S=3)

どちらのアプローチでも次の結果が生成されます。

[[ 1  2  3  4  5]
 [ 4  5  6  7  8]
 [ 7  8  9 10 11]]

以上がNumPy 配列からストライドを使用してサブ配列を効率的に作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。