我得到一個關於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. 用布爾數組掩蓋一系列
- 3. 用布爾值對數組進行二進制搜索
- 4. 使用布爾型索引數組篩選器列表
- 5. 布爾索引ND numpy的陣列
- 6. 如何高效地使用索引數組作爲掩碼將numpy數組轉換爲布爾數組?
- 7. 對特定數據進行布爾索引
- 8. 在Matlab中使用矩陣對多維數組進行索引
- 9. 優化調用來檢索掩碼數組的掩碼元素的索引?
- 10. 搜索陣列與布爾
- 11. 陣列上布爾搜索
- 12. 刪除所有元素在對應於布爾陣列掩模
- 13. 使用另一3D指數陣列對4D陣列進行索引
- 14. 索引掩蔽元件陣列
- 15. 訪問索引行/布爾矩陣的列如果爲真
- 16. 如何使用鏈式比較布爾掩碼數組?
- 17. numpy數組索引布爾值
- 18. 試圖理解布爾數組索引
- 19. 使用布爾值掩碼和索引列表替換Tensorflow中的某些行的一些行
- 20. 生成一個將一個數組索引到另一個數組中的布爾掩碼
- 21. 從末尾對數組進行索引
- 22. 在rpy2中對數組進行索引
- 23. 德爾福掩碼的二進制數
- 24. 區分指數數組和布爾型掩碼的最佳方法
- 25. 使用布爾索引複製或查看numpy子陣列
- 26. 用於條件減去現有值的Numpy布爾索引掩碼
- 27. 使用numpy將布爾數組索引到多維數組中
- 28. 在Matlab中對矩陣進行索引
- 29. 嵌套np.where和布爾型數組索引問題
- 30. 使用矩陣運算而不是FOR循環將單元格數組與索引值進行布爾比較
您使用的是什麼PEP8測試儀? PEP8是一種通用的Python風格建議。它不適應'numpy'。你的表情對我來說看起來非常好。 – hpaulj
'mask == False'與'〜mask'相同,但與'mask false'或'not mask'完全不同。 – hpaulj
@hpaulj我使用pycharm和它的本地代碼檢查是我相信使用pep8 v'1.7.0' – ktavabi