■■■トラブル内容 ■■■
以下のコードでpython の numba を使用したところ、その下のようなエラーが出ました。■■実行コード
from numba import jit, njit, f8, i8
@njit('f8(f8[:],f8[:],i8)')
def weighted_moving_average(input_list, weight, where_to_write):
rrr=[0.0]*len(input_list)
for nnn in range(0, len(input_list) - len(weight)):
ttt=0 #temporary
for mmm in range(0, len(weight)):
ttt += (weight[mmm] * input_list[nnn+mmm])
rrr[nnn + int(where_to_write)] = ttt/len(weight)
return rrr
■■エラーコード
TypingError: No conversion from list(float64) to float64 for '$126return_value.1', defined at None
File "<ipython-input-9-938219424ced>", line 9:
def weighted_moving_average(input_list, weight, where_to_write):
<source elided>
rrr[nnn + int(where_to_write)] = ttt/len(weight)
return rrr
^
[1] During: typing of assignment at <ipython-input-9-938219424ced> (9)
下に続く・・・
スポンサードリンク
■■■対策 ■■■
numba上の返り値の型指定を消す。つまり@njit('f8(f8[:],f8[:],i8)') を
@njit('(f8[:],f8[:],i8)') に変更しました。
エラーコードが実際とかみ合っていない or 私の理解力が不十分、によりエラーコードから原因はわかりませんでしたが、どうやら float64の部分とreturnの部分がお気に召さないようなので消しました。
"No conversion from list" numba
でググってみても問題解決に至らなかったので、上記原始的方法で片づけました。
良い方法をご存知でしたらコメントをお願いします。
(コメントされる場合はコメントの最初にjjjjと入れて下さい。無い場合はスパムとみなされてしまいます。 English comments will be welcomed. If you have any comments, please write 'jjjj' at first of your comments OR spam filters will delete your comments.)
スポンサードリンク