ホームページ >バックエンド開発 >Python チュートリアル >Numpy 配列で一致する行を効率的に検索するにはどうすればよいですか?

Numpy 配列で一致する行を効率的に検索するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-21 18:17:30599ブラウズ

How to Efficiently Search for a Matching Row in a Numpy Array?

Numpy 配列の一致する行を効率的にチェックする方法

Numpy 配列に特定の行が含まれているかどうかを判断するには、操作を終了することが重要です一致が見つかるとすぐに、不必要な反復を回避します。

考えられる解決策

  • Using .tolist(): 配列を変換するPython リストに変換し、「in」演算子を使用します。この方法は、一致する行が配列の先頭近くにある場合に特に効率的です。
  • ビューの使用: 配列のビューを作成し、ターゲット行との行単位の比較を可能にします。
  • Numpy リストの反復: 配列要素を生成し、ターゲット行に対して各行をテストします。ただし、このアプローチは比較的時間がかかります。
  • numpy 論理関数の使用: np.equal() を適用して要素ごとの比較を実行し、その後 .all(1).any(

パフォーマンスの比較

さまざまなサイズの配列でこれらのメソッドをテストすると、numpy ルーチンが一貫して検索で優れていることがわかります。スピード。かかる時間は、一致が見つかるか見つからないかには関係ありません。

たとえば、numpy の「view」メソッドは、ターゲット行がどこにあるか、またはどこにあるかに関係なく、300,000 x 3 要素の配列を約 0.01 秒で検索します。

対照的に、Python の "in" 演算子は初期の一致では大幅に高速化できます (例: 0.003 秒) が、ジェネレーター技術は網羅的な検索では著しく遅くなります (例: 6.47 秒)。

結論

Numpy 配列で効率的に行マッチングを行うには、np.equal() と .all(1).any() を組み合わせて使用​​することをお勧めします。検索結果に関係なく、一貫したパフォーマンスを提供します。

以上がNumpy 配列で一致する行を効率的に検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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