[Numpy-discussion] 32/64-bit machines, integer arrays and python ints

Bill Spotz wfspotz at sandia.gov
Thu Sep 28 12:43:26 EDT 2006


I am wrapping code using swig and extending it to use numpy.

One class method I wrap (let's call it myElements()) returns an array  
of ints, and I convert it to a numpy array with

     PyArray_SimpleNew(1,n,'i');

I obtain the data pointer, fill in the values and return it as the  
method return argument.

In python, it is common to want to loop over this array and treat its  
elements as integers:

     for row in map.myElements():
         matrix.setElements(row, [row-1,row,row+1], [-1.0,2.0,-1.0])

On a 32-bit machine, this has worked fine, but on a 64-bit machine, I  
get a type error:

     TypeError: in method 'setElements', argument 2 of type 'int'

because row is a <type 'int32scalar'>.

It would be nice if I could get the integer conversion to work  
automatically under the covers, but I'm not exactly sure how to make  
that work.

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







More information about the NumPy-Discussion mailing list