numpy.argminとnumpy.aminの両方の結果をnumpyを一度に呼び出して取得できますか?ありがとう。効率的にnumpy.argminとnumpy.aminを同時に取得する
1
A
答えて
4
np.argmin
を使用すると、最小値に対応するインデックスを取得し、NumPy's advanced indexing
のインデックスを使用して最小値を取得できます。
2D
アレイを使用して、使用方法を紹介しましょう。 A
を2D
配列とし、axis=1
に沿って最小のインデックスと値を探したいとします。
したがって、我々は行うことができます -
min_idx = np.argmin(A,axis=1)
min_val = A[np.arange(A.shape[0]),min_idx]
のは、サンプル実行のための実際の2D
配列を取り、結果を検証してみましょう -
In [16]: A
Out[16]:
array([[79, 97, 12, 54, 59],
[44, 45, 42, 78, 32],
[32, 41, 67, 60, 4],
[24, 4, 85, 94, 65]])
In [17]: min_idx = np.argmin(A,axis=1)
In [18]: A[np.arange(A.shape[0]),min_idx] # Using min_idx & indexing
Out[18]: array([12, 32, 4, 4])
In [19]: np.amin(A,axis=1) # Using np.amin to verify
Out[19]: array([12, 32, 4, 4])
ランタイムテストを -
In [26]: def original_app(A):
...: min_idx = np.argmin(A,axis=1)
...: min_val = np.amin(A,axis=1)
...: return min_idx, min_val
...:
...: def proposed_app(A):
...: min_idx = np.argmin(A,axis=1)
...: min_val = A[np.arange(A.shape[0]),min_idx]
...: return min_idx, min_val
...:
In [27]: A = np.random.randint(0,99,(4000,5000))
In [28]: %timeit original_app(A)
10 loops, best of 3: 70.9 ms per loop
In [29]: %timeit proposed_app(A)
10 loops, best of 3: 33.1 ms per loop
を
タイミングもう少しCT -
In [31]: min_idx = np.argmin(A,axis=1)
In [32]: %timeit np.argmin(A,axis=1) # Used in both methods
10 loops, best of 3: 34.5 ms per loop
In [33]: %timeit np.amin(A,axis=1) # Original approach
10 loops, best of 3: 37.3 ms per loop
In [34]: %timeit A[np.arange(A.shape[0]),min_idx] # Proposed approach
10000 loops, best of 3: 56 µs per loop
我々はそれに費やさ無視できるランタイムとの最後の段階で高度なインデックスを持つ大きなゲインを見ることができるように。これによりほぼ100%のランタイムシェービングが可能になりました!
関連する問題
- 1. Javaの取得時間の部品を効率的
- 2. グループごとに時系列を効率的に入力する
- 3. MediaStoreのオーディオファイルのジャンルを効率的に取得する
- 4. 効率的にパンダインデックスの和集合を取得する
- 5. 大容量ファイルシステムのファイルリストを効率的に取得する
- 6. 関係のID配列を効率的に取得する
- 7. BigQueryテーブルのパーティションを効率的に取得する方法
- 8. C#System.Drawing.Bitmapから効率的にピクセルデータを取得する
- 9. タイムラインポストの総数を効率的に取得する方法
- 10. AndroidデータベースとWebデータベースを効率的に同期する方法
- 11. スケールアセットビットマップの効率的な取得
- 12. boto3 Bucket.object.filterは効率的にオブジェクトを取得しますか?
- 13. 一時的なユーザーデータを効率的に保存する方法
- 14. データベースのドロップダウンリストから値を効率的に取得
- 15. Selectステートメントから効率的に行数を取得
- 16. JavaScriptの文字列から効率的に値を取得
- 17. SQLで以前の値を効率的に取得
- 18. グラフAPIからのシェア数を効率的に取得
- 19. SQL:効率的に最後のレコードを取得
- 20. アナログ時計の分針と時針を効率的に更新する方法
- 21. QGraphicsView:効率的にQGraphicsItemsのビューポートの座標を取得するには?
- 22. Calendar.getInstance()を効率的に呼び出すことが効率的ですか?
- 23. タイムスタンプでデータを取得する最も効率的な方法
- 24. user_nameを取得する効率的な方法
- 25. 効率をテストするための良いボーナスクイズを探す(具体的には時間に関する効率)
- 26. 同じFileSystem内のファイルを効率的にコピーする方法
- 27. 同じリモートマシンのUNCパスを効率的にコピーする方法
- 28. カラムあたりのpysparkデータフレームの効率を効率的に取る
- 29. が効率的に
- 30. が効率的に
別々の行で呼び出しても、コンマで区切っても問題ありませんか? – EdChum
。私はargminとaminの両方を行うことができる配列の単一のチェックがあると思っていた。配列をargminのために1回チェックしてからもう一度aminをチェックすると時間が浪費されるようです。それとも、これは実際には遅いですか? – rxu