Chciałbym szybko napełnić jak kilku kopiach, jak to możliwe długi tablicy kodowanym że jestem otrzymujących stopniowo od CCredo Pamięci - z zestawu struktur?
Jeśli moja struct jest tylko podstawowe typy danych, jak następuje:
cdef packed struct oh_hi:
int lucky
char unlucky
Wtedy następujące prace dobrze:
DEF MAXPOWER = 1000000
cdef oh_hi * hi2u = <oh_hi *>malloc(sizeof(oh_hi)*MAXPOWER)
cdef oh_hi [:] hi2me = <oh_hi[:MAXPOWER]> hi2u
Ale kiedy mogę zmienić struct trzymać tablicę znaków:
cdef packed struct oh_hi:
int lucky
char unlucky[10]
Dotychczasowe kompiluje odlewania memoryview ale gdy bieg daje:
ValueError: Expected 1 dimension(s), got 1
Czy istnieje prosty sposób to zrobić w Cython? Zdaję sobie sprawę, że mógłbym stworzyć strukturę tablicy, ale afaik, która nie pozwoliłaby mi bezpośrednio przypisać struktur C.
To wydaje się być bardzo podobne do [ten problem] (https://stackoverflow.com/q/30035287/2588654) z numpy uporządkowanymi tablicami. Problem w tym, że cyton wydaje się nie lubić mieszania tablic z wartościami skalarnymi, jeśli pierwszy element w strukturze jest skalarem. Obejście polega na zmianie kolejności elementów w strukturze tak, aby zawsze istniał element/element tablicy. – CodeSurgeon