указатель ctypes на массив numpy с пользовательским типом dtype - PullRequest
1 голос
/ 29 июня 2011

У меня есть массив с настраиваемым типом d:

a = np.zeros(100, dtype=np.dtype([('one',np.double),('two',np.int)]))
a['one']=np.arange(100)
a['two']=np.arange(100)*-1

Я хочу создать указатель ctypes, который я могу передать в библиотеку C. Проблема в том, что библиотека C ожидает только указатель на двойной массив, поле 'one'.

Я пробовал с: а [ 'один']. ctypes.data_as (ctypes.POINTER (ctypes.c_double))

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

У вас есть предложения, возможно, без копирования массива?

1 Ответ

1 голос
/ 29 июня 2011

Вам нужно будет скопировать данные в непрерывный массив.

one = np.ascontiguousarray(a['one'])
one.ctypes.data_as(ctypes.POINTER(ctypes.c_double))
...