[英]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.25
或0.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.