首頁 > 後端開發 > Python教學 > 如何有效率地將函數應用於 NumPy 陣列?

如何有效率地將函數應用於 NumPy 陣列?

Barbara Streisand
發布: 2024-12-18 04:42:16
原創
927 人瀏覽過

How Can I Efficiently Apply Functions to NumPy Arrays?

Numpy 數組的向量化函數

要在numpy 數組上有效地映射函數,您可以利用向量化的強大功能,它允許您對數組按元素執行操作。這比使用基於循環的方法(如列表推導式)要快得多。

NumPy 本機函數

如果您要對應的函數已經向量化為NumPy 函數,例如np.square() 用於將元素平方,強烈建議使用它。它將比其他方法快得多。

使用 NumPy 的向量化進行矢量化

NumPy 提供了向量化函數的向量化函數。它包裝您的函數以在數組上啟用按元素操作:

import numpy as np

def f(x):
    return x ** 2

vf = np.vectorize(f)
x = np.array([1, 2, 3, 4, 5])
squares = vf(x)
登入後複製

另一種選擇是在不初始化函數包裝器的情況下使用矢量化:

squares = np.vectorize(f)(x)
登入後複製

其他向量化方法

其他向量化方法include:

  • np.fromiter():迭代產生器並建構一個陣列。
  • np.array(list(map(f, x))):使用地圖function 對每個元素套用函數,然後轉換為陣列。

效能注意事項

雖然所有這些方法都可以向量化函數,但它們的效能可能會有所不同。基準測試表明,如果可用,使用 NumPy 的本機函數是最快的。對於其他情況,向量化和 fromiter 通常比 np.array(list(map(f, x))) 表現更好。

以上是如何有效率地將函數應用於 NumPy 陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板