0
錯誤。如果我用這個功能Numba nopython與np.sum
import numpy as np
from numba import jit
@jit(nopython=True)
def diss_matrix(data):
n = data.shape[0]
diss = np.empty((n, n))
for i in range(n):
for j in range(i):
dist = np.absolute(data[i] - data[j]).sum()
diss[i, j] = dist
diss[j, i] = dist
return diss
x = np.random.randn(100)
print(diss_matrix(x))
我得到這個錯誤
numba.errors.UntypedAttributeError: Failed at nopython (nopython frontend)
Unknown attribute 'sum' of type float64
File "test_numba.py", line 11
[1] During: typing of get attribute at
c:/Users/matte/Dropbox/Università/SDS/Thesis/source/test_numba.py (11)
我一直在試圖理解這意味着什麼。事實是,觸發錯誤的指令是以下
dist = np.absolute(data[i] - data[j]).sum()
,但我認爲問題是,不知何故,numba
假定data[i]
和data[j]
是float64
,而不是陣列。 其實,下面的代碼
@jit(nopython=True)
def diss_matrix3():
vec1 = np.array([1, 2, 3])
vec2 = np.array([2, 3, 4])
dist = np.absolute(vec1 - vec2).sum()
return dist
完美無缺的作品。
我正在使用numba 0.35
,我試圖找到一種方法來使該功能起作用。我知道scipy.spatial.distance.pdist
的存在,但我需要自己實現。此外,未來可能會出現同樣的錯誤。
有什麼建議嗎?
謝謝!我很絕望,沒有檢查這種基本的東西。誤導我的是它使用'nopython = False'編譯的事實。 –