[Numpy-discussion] Can PyArray_CastTo be used to "subcast" an array of float to int

David Cournapeau david at ar.media.kyoto-u.ac.jp
Tue Jan 16 00:48:23 EST 2007


David Cournapeau wrote:
> Hi,
>
>     I would like to convert a double array to an *existing* array of 
> int32 using the C numpy API. I tried using PyArray_CastTo, but this 
> gives me an array full of zeros instead of converting the items to int. 
> I am doing something like the following to convert a PyArrayObject in_o 
> of double:
>
>     ndescr  = PyArray_DescrNewFromType(NPY_INT32);
>    
>     /* should be equivalent to astype */
>     ar  = (PyArrayObject*)PyArray_FromArray((PyArrayObject*)in_o, 
> ndescr, NPY_FORCECAST);
>     if (ar == NULL) {
>         goto clean_ndescr;
>     }
>     /* Using C Api for casting */
>     dims    = PyArray_DIMS(in_o);
>     Py_INCREF(ndescr);
>     casted  = (PyArrayObject*)PyArray_Zeros(((PyArrayObject*)in_o)->nd, 
> dims, ndescr, 0);
>     if (casted == NULL) {
>         goto clean_ar;
>     }
>     st  = PyArray_CastTo((PyArrayObject*)in_o, casted);
>     if (st) {
>         goto clean_casted;
>     }
Just forget about it, I didn't notice that PyArray_CastTo takes its 
input as the 2d argument...

Sorry for the noise,

David



More information about the NumPy-Discussion mailing list