我得到一個關於numpy.where(mask == False)
的PEP8投訴,其中mask是一個布爾數組。 PEP8建議的比較應該是「如果條件不成立」或「如果不成立」。 numpy.where()
內建議比較的pythonic語法是什麼?用布爾型掩碼陣列對Pythonic數組進行索引
回答
否定NumPy中的布爾掩碼數組是~mask
。
另外,考慮你是否真的需要where
。看似最常見的用法是some_array[np.where(some_mask)]
,但這只是寫出some_array[some_mask]
時不必要的羅嗦和低效率的方式。
布爾索引與「where」版本花費的時間相同。我認爲這意味着有一個隱含的「where」。 https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#boolean-array-indexing – hpaulj
@hpaulj:IIRC,對於更復雜的情況,NumPy確實調用了「非零」,但對於簡單的情況,它繞過它並直接使用布爾掩碼。 – user2357112
@hpaulj:查看['numpy/core/src/multiarray/mapping.c']中的'array_boolean_subscript'代碼(https://github.com/numpy/numpy/blob/master/numpy/core/src/multiarray /mapping.c)。雖然我得到的時機並不是我所期望的。在一些輸入上,「where」實際上更快! – user2357112
- 1. Javascript中的布爾型數組掩碼
- 2. 如何高效地使用索引數組作爲掩碼將numpy數組轉換爲布爾數組?
- 3. 對特定數據進行布爾索引
- 4. 搜索陣列與布爾
- 5. 優化調用來檢索掩碼數組的掩碼元素的索引?
- 6. 訪問索引行/布爾矩陣的列如果爲真
- 7. 如何使用鏈式比較布爾掩碼數組?
- 8. 試圖理解布爾數組索引
- 9. 在rpy2中對數組進行索引
- 10. 從末尾對數組進行索引
- 11. 區分指數數組和布爾型掩碼的最佳方法
- 12. 德爾福掩碼的二進制數
- 13. 使用numpy將布爾數組索引到多維數組中
- 14. 使用矩陣運算而不是FOR循環將單元格數組與索引值進行布爾比較
- 15. 如何在numpy類的數組上使用掩碼索引?
- 16. IndexingError使用布爾索引
- 17. TensorFlow布爾索引
- 18. 使用2d矩陣加矢量對3D矩陣進行索引
- 19. 用另一個矩陣對矩陣索引進行子集化
- 20. 什麼時候可以使用布爾DataArray進行索引?
- 21. 陣列引用數組散列數組
- 22. 如何使用其他矩陣的列最大值對矩陣進行索引
- 23. 在numpy中,如何將大小爲N的數組分配給具有布爾掩碼的較大陣列
- 24. 通過列向量對矩陣進行索引
- 25. pythonic方式使行作爲列索引和列作爲行索引
- 26. 數組:索引-7的出陣列
- 27. 索引多維數組以與陣列
- 28. 數組索引到寬爲陣列
- 29. 引用數組(陣列中)
- 30. 錯誤:不支持使用矩陣或列進行列索引
您使用的是什麼PEP8測試儀? PEP8是一種通用的Python風格建議。它不適應'numpy'。你的表情對我來說看起來非常好。 – hpaulj
'mask == False'與'〜mask'相同,但與'mask false'或'not mask'完全不同。 – hpaulj
@hpaulj我使用pycharm和它的本地代碼檢查是我相信使用pep8 v'1.7.0' – ktavabi