Расширение Python C с Numpy - PullRequest
       2

Расширение Python C с Numpy

0 голосов
/ 11 октября 2011

Я пытаюсь создать расширение C для Python с помощью Numpy, и у меня возникают проблемы с чтением данных из Numpy в моем коде C

Если я создаю простой массив, подобный этому, в Python, я могу прочитать значения в коде C:

Python:

from numpy import *
myarray = zeros([5, 20], dtype=uint32)

C

value = (unsigned long*)PyArray_GETPTR2(myarray,0,0);    

Проблема в том, что я пытаюсь прочитать значение из следующего массива Numpy:

Python:

from numpy import *
myarray = zeros([5], dtype=[('f1', 'S16'), ('f2', 'S16'), ('f3', uint64), ('f4', uint32)] )

C

value = (void*)PyArray_GETPTR1(myarray,0);

Какой тип данных og является значением в этом случае?

1 Ответ

0 голосов
/ 12 октября 2011

Numpy структурированные типы данных по умолчанию эквивалентны C-упакованным структурам.Однако они также могут быть более сложными.

Чтобы получить доступ к полям, отметьте, например, myarray.dtype.fields['f3'], что в вашем случае равно (dtype('uint64'), 32).Вы должны иметь возможность получить доступ к соответствующим данным через (npy_uint64*)(((char*)value) + 32).

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