建立新欄位時,np.vectorize() 總是比 Pandas apply() 更快嗎?
是的,np.vectorize() 是對於此任務,通常比 Pandas apply() 更快。我們的測試顯示 np.vectorize() 可以明顯更快,尤其是對於較大的資料集。
為什麼 np.vectorize() 比 apply() 快?
Pandas apply() 依賴 Python 層級循環來迭代資料幀中的行或列。與 np.vectorize() 相比,這會帶來顯著的開銷,後者使用優化的基於 C 的程式碼進行向量化操作。
np.vectorize() 將您的輸入函數轉換為通用函數 (ufunc) 並對其進行評估使用廣播的輸入數組的連續元組。這避免了創建和傳遞 Pandas 物件的開銷,從而提高了效能。
np.vectorize() 應該優先於 apply() 嗎?
用於建立新列作為現有列的函數,np.vectorize() 由於其卓越的性能通常是更好的選擇。但是,需要注意的是,與 apply() 相比,np.vectorize() 的靈活性有限,尤其是在存取其他欄位或執行複雜操作時。
其他更快的選項
對於真正最佳化的向量化計算,像 np.where() 或逐元素運算這樣的 NumPy 運算非常有效。如果效能至關重要,請考慮使用這些函式庫或探索像 numba 這樣的函式庫,它們可以對自訂函數進行高效的 JIT 編譯。
以上是np.vectorize() 總是在 Pandas 中建立新列的最快方法嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!