Я хочу создать массив numpy, используя пользовательскую структуру данных numba. Когда я включаю фиктивную переменную в структуру данных, все работает нормально, но когда я удаляю ее, получающаяся матрица представляет собой повторение данных, которые я хочу. Но я не знаю, почему numpy повторяет мои данные и как их избежать.
import numpy as np
from numba.types import float64, Record, NestedArray
poly = np.random.rand (3,2)
args_dtype = Record.make_c_struct([
('dummy', float64),
('poly', NestedArray(dtype=float64, shape=poly.shape)),])
args = np.array((0,poly), dtype=args_dtype)
print(args)
print('-------------------------')
args_dtype = Record.make_c_struct([
('poly', NestedArray(dtype=float64, shape=poly.shape)),])
args = np.array(poly, dtype=args_dtype)
print(args)
Вывод:
(0., [[0.72543644, 0.77155485], [0.08560247, 0.11165251], [0.48421994, 0.15144579]])
-------------------------
[[([[0.72543644, 0.72543644], [0.72543644, 0.72543644], [0.72543644, 0.72543644]],)
([[0.77155485, 0.77155485], [0.77155485, 0.77155485], [0.77155485, 0.77155485]],)]
[([[0.08560247, 0.08560247], [0.08560247, 0.08560247], [0.08560247, 0.08560247]],)
([[0.11165251, 0.11165251], [0.11165251, 0.11165251], [0.11165251, 0.11165251]],)]
[([[0.48421994, 0.48421994], [0.48421994, 0.48421994], [0.48421994, 0.48421994]],)
([[0.15144579, 0.15144579], [0.15144579, 0.15144579], [0.15144579, 0.15144579]],)]]
Редактировать: печать dtype для обеих стадий:
{'names':['dummy','poly'], 'formats':['<f8',('<f8', (3, 2))], 'offsets':[0,8], 'itemsize':56, 'aligned':True}
-------------------------
{'names':['poly'], 'formats':[('<f8', (3, 2))], 'offsets':[0], 'itemsize':48, 'aligned':True}