Вам, вероятно, понадобится использовать интерфейс numpy ctypes, чтобы получить необработанный указатель на хранилище, а затем сделать указатель ctypes, удваивающийся для передачи в вызов.ndarray.data
- это тип буфера, а не указатель.
У меня нет опыта работы с boost.python
, но я подозреваю, что что-то вроде
In [28]: x=np.array([1,2,3,4],dtype=np.double)
In [29]: p=x.ctypes.data_as(ctypes.POINTER(ctypes.c_double))
In [30]: type(p)
Out[30]: <class 'ctypes.LP_c_double'>
будет работать, если его передатьобернутая функция C ++, ожидающая указатель в качестве аргумента.