ホームページ >バックエンド開発 >Python チュートリアル >NumPy 配列内の特定の行を効率的に検索する方法: 質問と解決策
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 サイトの他の関連記事を参照してください。