我試圖執行這段代碼,但是當我第一次呼叫它來編譯時,numba 很生氣gen_code = np.array([]):
char_array = np.array(['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r',
's','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J',
'K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1',
'2','3','4','5','6','7','8','9'])
# creating a random 40-lenghted code from characters in char_array and returning as python string
@nb.njit(parallel=True)
def generateCode():
gen_code = np.array([])
for _ in nb.prange(40):
gen_code = np.append(gen_code, char_array[random.randint(0, 61)])
return ''.join(gen_code)
完全例外:
Type of variable 'gen_code' cannot be determined, operation: call $4load_method.1($6build_list.2, func=$4load_method.1, args=[Var($6build_list.2, my_new_project.py:21)], kws=(), vararg=None, varkwarg=None, target=None), location: d:\python_docs\Projects\my_new_project.py (21)
其中 21 是我上面提到的那條線。為什么 numba 無法初始化常見的 numpy 陣列?謝謝你的幫助!
uj5u.com熱心網友回復:
您是否嘗試創建具有預定義形狀的 np 陣列然后迭代?
與此類似的東西:
@nb.njit(parallel=True)
def generateCode():
gen_code = np.empty(shape=(R), dtype = 'char') #replace R with correct value
for i in numba.prange(R):
gen_code[i] =gen_code, char_array[random.randint(0, 61)]
return ''.join(gen_code)
請參閱這篇文章,它解釋了為什么 np.append() 不是思考它的正確方法:如何創建一個空陣列,然后在 NumPy 中附加到它?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/511905.html
上一篇:Numpy在哪里起作用
下一篇:轉換陣列中的型別
