void * C array to a Numpy array using Swig

Travis E. Oliphant oliphant.travis at ieee.org
Thu Jan 12 18:26:28 EST 2006

Krish wrote:
> Hello People
> I hope I am On Topic. Anyways, here is my problem. Any insights would
> be really appreciated.

Posting to the numpy-discussion at lists.sourceforge.net  list would help 
generate more responses, I think.

> I have wrapped a C IO module using SWIG -> Python Module. Suppose the
> name of the module is "imageio" and the reader function from the file
> is image_read() which returns an object ( "filled" C structure) with a
> lot of members.
> Let
> a = imageio.image_read("testfile.image")
> Now a is the object which contains pointer to data of the image. ( void
> * pdata). ( a also contains the datatype which I need to typecast to
> get the data pointed by pdata). My question is how to access the data
> pointed by pdata in *Python*.

Yes, you are right that you need to use typemaps.  It's been awhile 
since I did this kind of thing, but here are some pointers.

1)  Look at Michael Sanner's typemaps at


Except for the CHAR version, these should work for NumPy by replacing 
Numeric/arrayobject.h with numpy/arrayobject.h

2) In full scipy there are typemaps for numpy arrays in 

Look here...


This should help you get started with some examples.  Typemaps can be a 
little confusing at first, but they do make your interface a bit nicer.


More information about the Python-list mailing list