В «чистом» 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