ホームページ  >  記事  >  バックエンド開発  >  NumPy 配列内の特定の行を効率的に検索する方法: 質問と解決策

NumPy 配列内の特定の行を効率的に検索する方法: 質問と解決策

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

Efficient Ways to Find a Specific Row in a NumPy Array: Questions and Solutions

NumPy 配列内の特定の行のインスタンスを効率的に検索する

NumPy 配列を使用する場合、 array には特定の行が含まれていますが、ndarray の標準の contains メソッドには疑問が生じます。この記事では、この問題に対する効率的で Python 的な解決策を紹介します。

1 つのアプローチには、.tolist() を使用して NumPy 配列を Python リストに変換し、リストのメンバーシップ チェックを実行することが含まれます。

a = np.array([[1,2],[10,20],[100,200]])
[1,2] in a.tolist() # Returns True
[1,20] in a.tolist() # Returns False

もう 1 つの方法は、配列のビューを使用し、.all(1) 関数を適用して各行をターゲット行と要素ごとに比較することです。

any((a[:]==[1,2]).all(1)) # Returns True
any((a[:]==[1,20]).all(1)) # Returns False

さらに、NumPy リストに対して生成することもできます。パフォーマンスが向上する可能性があります。ただし、結果が早期に見つからない場合、このアプローチは非効率的になる可能性があります。

any(([1,2] == x).all() for x in a) # Stops on first occurrence

最後に、NumPy の論理関数は比較を実行するための簡潔な方法を提供します。

any(np.equal(a,[1,2]).all(1)) # Returns True

ベンチマーク結果は次のことを示しています。 numpy ルーチンは、ヒットまたはミスのシナリオに関係なく、一貫した検索速度を維持します。ビュー、ロジックイコール、Python in 演算子のアプローチは効率の点では同等ですが、NumPy を超えるジェネレーターは配列全体の検索には推奨されません。

以上がNumPy 配列内の特定の行を効率的に検索する方法: 質問と解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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