[Numpy-discussion] numpy.ctypeslib.ndpointer and the restype attribute

Jochen Schroeder cycomanic at gmail.com
Mon Mar 23 16:03:48 EDT 2009


On 23/03/09 15:40, Sturla Molden wrote:
> Jens Rantil wrote:
> > Hi all,
> >
> > So I have a C-function in a DLL loaded through ctypes. This particular 
> > function returns a pointer to a double. In fact I know that this 
> > pointer points to the first element in an array of, say for simplicity, 
> > 200 elements.
> >
> > How do I convert this pointer to a NumPy array that uses this data (ie. 
> > no copy of data in memory)? I am able to create a numpy array using a 
> > copy of the data.
> >   
> 
> def fromaddress(address, nbytes, dtype=double):
> 
>     class Dummy(object): pass
> 
>     d = Dummy()
> 
>     d.__array_interface__ = {
> 
>          'data' : (address, False),
> 
>          'typestr' : numpy.uint8.str,
> 
>          'descr' : numpy.uint8.descr,
> 
>          'shape' : (nbytes,),
> 
>          'strides' : None,
> 
>          'version' : 3
> 
>     }   
> 
>     return numpy.asarray(d).view( dtype=dtype )
> 

Might I suggest that restype is going to be removed from the  documentation, 
it also cost me quite some time trying to get ndpointer to work with restype 
when I first tried it until I finally came to the conclusion that an
approach like the above is necessary and ndpointer does not work with
restype. 

Cheers
Jochen



More information about the NumPy-Discussion mailing list