在迭代算法中,多次使用大numpy數組是很常見的。通常情況下,陣列需要在每次迭代時手動「重置」。填充現有數組(使用nans還是0)和創建新數組之間是否存在性能差異?如果是這樣,爲什麼?填充現有numpy數組和創建新數組之間的性能差異
2
A
回答
1
答案取決於你的數組的大小。雖然分配新的內存區域需要幾乎固定的時間,但填充此內存區域的時間隨着大小而線性增長。 但是,使用numpy.zeros
填充新分配的內存幾乎是使用numpy.fill
填充現有陣列的兩倍,比項目設置x[:] = 0
快了三倍。
所以在我的機器上,填充少於800個元素的向量比創建新向量要快,超過800個元素創建新向量的速度會更快。
相關問題
- 1. numpy數組類型之間的差異
- 2. 填充numpy數組
- 3. 按行填充numpy數組
- 4. 沒有填充的滾動numpy數組?
- 5. numpy數組的有界和或差數
- 6. 兩個數組之間的差異值
- 7. 創建閉包和some_func.bind之間的性能差異(這)
- 8. 如何用另一個數組創建或填充一個numpy數組?
- 9. 填充numpy數組的問題
- 10. Swazoo和Komanche之間的性能差異?
- 11. 查詢數據庫或搜索數組之間的性能差異?
- 12. Haskell:List v。數組,性能差異
- 13. 數組初始化 - 性能差異
- 14. C mmap和numpy memmap之間的差異
- 15. python numpy數組填充問題
- 16. Numpy:如何巧妙地填充數組?
- 17. 用對象實例填充NumPy數組?
- 18. 在python(numpy)中填充數組?
- 19. python如何用零填充numpy數組
- 20. 數組和矩陣運算符之間是否存在性能差異?
- 21. PHP創建新的數組從現有
- 22. 創建並填充空數組
- 23. 獲得兩行之間的差異並填充差異值
- 24. 發現兩個關聯多維數組之間的差異
- 25. C#發現對象數組之間的差異
- 26. 字節數組和哈希映射表的字節數組之間的性能差異
- 27. 在NumPy和JPype之間轉換數組?
- 28. 用現有對象填充數組
- 29. 從現有的數組中創建一個新的數組php
- 30. 用新數據填充現有數組/表格
要知道是否存在性能差異的唯一方法是測量它。 – juanchopanza
如果事先已知,預先爲結果預先分配必要空間通常會有很大的好處。通常可以使用'np.empty'來分配它。如果算法在列表中累計較小的數組,最終轉換爲大數組可能仍然比預分配慢。這肯定與numpy內部的內存處理有關。 – eickenberg
重置的目的是什麼?它是否將數組設置爲某個初始值(在這種情況下NaN看起來是一個奇數值)?否則,不需要重置數組,只需覆蓋執行期間存在的任何值即可。 – Evert