示例代碼與NumPy的ufunc:numba.vectorize ufunc不支持timedelta64
import numpy as np
nums = np.array([1, 2, 3])
times = nums.astype('timedelta64[ns]')
np.less(nums, 2)
np.less(nums, np.timedelta64(2))
這兩項均得到相同的結果:
array([ True, False, False], dtype=bool)
現在我想要做同樣的事情與Numba:
import numba
@numba.vectorize(nopython=True)
def myless(a, b):
return a < b
myless(nums, 2)
myless(times, np.timedelta64(2)) # fails
首先給出正確的結果,但第二次失敗:
TypeError: ufunc 'myless' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
怎麼了?我該如何解決它?
是啊,雖然這使得很難在調用點。不好,因爲ufuncs的包裝會帶走所有的ufunc魔法。據我所知,你無法在任何地方隱藏黑客。另外,如果單位不同(如比較秒和納秒),您仍然需要一個副本。 –