「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > NumPy 配列内の特定の行を効率的に検索する方法: 質問と解決策

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

2024 年 11 月 12 日に公開
ブラウズ:632

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 のアプローチは、効率の点では同等ですが、NumPy を使用するジェネレーターは完全な配列検索には推奨されません。

リリースステートメント この記事は次の場所に転載されています: 1729506017 権利侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3