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

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

Susan Sarandon
リリース: 2024-12-02 18:18:11
オリジナル
1069 人が閲覧しました

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 サイトの他の関連記事を参照してください。

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