Я пытаюсь назначить одноэлементный массив определенному элементу в массиве Numpy, используя режим nopython
Numba, но я получаю TypeError
, и я не могу понять, почему.Это прекрасно работает без Numba.Мой MCVE ниже.
import numpy as np
from numba import jit
@jit(nopython=True)
def mcve():
tmp = np.zeros((2,2))
tmp[0, 0] = np.array([0])
if __name__ == "__main__":
mcve()
Я получаю следующую ошибку:
Traceback (most recent call last):
File "C:/Users/User/Dropbox/Work/Stockholms universitet/Uppsatser/Hyresregleringen/supplementary/pythontest/test.py", line 12, in <module>
mcve()
File "C:\Users\User\Anaconda3\lib\site-packages\numba\dispatcher.py", line 348, in _compile_for_args
error_rewrite(e, 'typing')
File "C:\Users\User\Anaconda3\lib\site-packages\numba\dispatcher.py", line 315, in error_rewrite
reraise(type(e), e, None)
File "C:\Users\User\Anaconda3\lib\site-packages\numba\six.py", line 658, in reraise
raise value.with_traceback(tb)
numba.errors.TypingError: Failed in nopython mode pipeline (step: nopython frontend)
Cannot resolve setitem: array(float64, 2d, C)[(0, 0)] = array(int64, 1d, C)
Я могу обойти ошибку, переписав вторую строку функции в tmp[0, 0] = np.array([0])[0]
.То есть путем извлечения первого элемента синглтона.Но должно ли это быть действительно необходимым?Или я просто что-то не так делаю?