簡體   English   中英

使用 `np.vectorize` 進行矢量化

[英]Vectorization using `np.vectorize`

我想使用np.vectroize對以下 function 進行矢量化:

def f(x):
if 0<=x<=1:
    return 0.5
elif 1<x<=3:
    return 0.25
else:
    return 0

下一步:

f = np.vectorize(f)

但是,如果我在f的輸入數組中輸入負值,突然間所有 output 值都變為零。 當所有值都是正數時沒有問題。 例如:

f([-0.1,1,2,3,4])

output 是:

array([0, 0, 0, 0, 0])

問題是您的陣列的類型。 根據文檔

向量化的 output 的數據類型是通過使用輸入的第一個元素調用 function 來確定的。

類型由第一個值確定,即0 ,因此類型為 integer。 如果返回0.250.5 ,則將其轉換為0 (因為int(0.25)int(0.5)0

解決方案:

f = np.vectorize(f,"d")

或者

return 0.0 # or float(0), but must be float

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM