[Numpy-discussion] Global Numpy vector with Swig

Bill Spotz wfspotz@sandia....
Thu Feb 15 15:26:50 CST 2007

It seems to me you would need to %ignore vec, so that it is not  
wrapped as a raw pointer to a double, and then in your interface file  
create a PyArrayObject whose data buffer points to vec (the most  
efficient way to do this is with %inline).  Then use %rename to  
rename whatever you called your PyArrayObject to "vec" (or not, if  
you do not care about the name).  Finally,

   foo.cvar.vec = numpy.zeros(10)

is going to decrement (and probably delete) your original vec and  
replace it with the new array of zeros (I think, unless there are  
some safeties put in place for cvars, in which case you would get an  
exception).  Use

   foo.cvar.vec[:] = ...

to manipulate the data in-place.

On Feb 15, 2007, at 1:18 AM, Andrea Tomadin wrote:

> Hi,
> I need to pass a Numpy array to a C code wrapped by Swig.
> The array in the C code is a global variable declared as
> double *vec
> and I would like to set it in the calling Python module foo using e.g.
> foo.cvar.vec = numpy.zeros(10)
> so that the array is manipulated in place.
> I found out the examples in the numpy/doc/swig dir and adapted them
> to my code, so now I can pass a Numpy array to a function. But in the
> examples
> I was not able to recognize any suggestion (any typedef?) to
> translate an array into a
> variable. I'm just writing an intermediate function that does the job,
> but I feel like writing a wrapping function that will be wrapped
> again by Swig...
> Any practical example is highly appreciated!
> Regards,
> Andrea
> _______________________________________________
> Numpy-discussion mailing list
> Numpy-discussion@scipy.org
> http://projects.scipy.org/mailman/listinfo/numpy-discussion

** Bill Spotz                                              **
** Sandia National Laboratories  Voice: (505)845-0170      **
** P.O. Box 5800                 Fax:   (505)284-5451      **
** Albuquerque, NM 87185-0370    Email: wfspotz@sandia.gov **

More information about the Numpy-discussion mailing list