ホームページ > バックエンド開発 > Python チュートリアル > NumPy で特定のストライドを持つ部分配列を効率的に抽出する方法は?

NumPy で特定のストライドを持つ部分配列を効率的に抽出する方法は?

Susan Sarandon
リリース: 2024-12-06 09:41:11
オリジナル
819 人が閲覧しました

How to Efficiently Extract Subarrays with a Specific Stride in NumPy?

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

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