Ошибка назначения структурированного массива - PullRequest
0 голосов
/ 05 марта 2019

В «чистом» Numpy присвоение данных структурированному массиву может выполняться с помощью кортежа:

from numpy import array

def f(t,x):
    t[0]=x

wedges = array([(3.14, 1), (2.71, 4)], dtype='float32,int32')
wedge=(0.47, 42)
f(wedges, wedge)
print(wedges)

К сожалению, в Numba код не компилируется в режиме nopython:

from numpy import array
from numba import jit

@jit(nopython=True)
def f(t,x):
    t[0]=x

wedges = array([(3.14, 1), (2.71, 4)], dtype='float32,int32')
wedge=(0.47, 42)
f(wedges, wedge)
print(wedges)

повышение:

numba.errors.TypingError: Failed in nopython mode pipeline (step: nopython frontend)
Cannot resolve setitem: unaligned array(Record([('f0', '<f4'), ('f1', '<i4')]), 1d, C)[0] = (float64, int64)

В отличие от этого, назначение для обычного массива Numpy работает:

from numpy import array
from numba import jit

@jit(nopython=True)
def f(t,x):
    t[0]=x

w = array([3.14, 2.71], dtype='float32')
ww= 0.47
f(w, ww)
print(w)

вывод:

[0.47 2.71]

Версия Numba: 0,42.1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...