我想用一種快速方法爲其分配一個具有布爾評估的函數。這是一個簡單的例子。我想任意a
和b
待評估下列函數:帶有布爾語句的Numpy向量化函數分配
a = 0.5
b = 0.6
def func(x):
x=max(x,a)
if x>b:
return x**2
else:
return x**3
,然後我想將函數值分配到一個陣列中的矢量方式(速度):
xRange = np.arange(0, 1, 0.1)
arr_func = func(xRange)
但我得到的錯誤:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
現在,我知道我可以在一個循環中賦值。但與矢量化等價物相比,這將會變得緩慢。我可以繞過這個異常,並仍然以矢量化的方式分配值嗎?
我想你可以使用https://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.vectorize.html – Lukisn
不要在這裏使用'np.vectorize'! –