我想np.vectorize AA單期看到使用numpy.vectorize這個lambda函數牙齒功能:NumPy的矢量化行爲
saw = lambda x: 0 if x < -2 or x > 2 else x
但是當我申請的量化saw
這個數組:
array([-4. , -3.57894737, -3.15789474, -2.73684211, -2.31578947,
-1.89473684, -1.47368421, -1.05263158, -0.63157895, -0.21052632,
0.21052632, 0.63157895, 1.05263158, 1.47368421, 1.89473684,
2.31578947, 2.73684211, 3.15789474, 3.57894737, 4. ])
我得到:
array([ 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 1, 1, 1, 0, 0,
0, 0, 0])
怎麼回事請告訴我?
對於考慮我使用Python 2.7使用numpy的1.10.2
請顯示您用於生成此代碼的所有相關代碼。它看起來像你的數據被轉換爲整數。也許改成'saw = lambda x:0.0 if x < -2 or x > 2 else x'? – SethMMorton
注意:最好使用'np.where'代替'np.vectorize'。 'np.vectorize'真的很慢。 – user2357112
在這種情況下,'where'比'vectorize'快2倍。使用布爾掩碼,我可以使它成爲3x。 – hpaulj