[Numpy-discussion] _import_array()

Travis Oliphant travis at continuum.io
Tue Feb 14 04:09:48 EST 2012


Technically, when you write an extension module you really should use import_array(); in the init method of the extensions module.   This ensures that the C-API is loaded so that the API -table is available if your C++ code uses the C-API at all. 

In this case you are just using some #defines that access the NumPy array structure, so it works without the import_array().   However, this could change in future releases (i.e. PyArray_DIMS and PyArray_DATA could become functions that are looked up in an API-table that must be loaded by import_array() ).

Best regards,

-Travis







On Feb 14, 2012, at 3:03 AM, Mads Ipsen wrote:

> Hi,
> 
> I have C++ module (OpenGL) that extracts data from numpy arrays. The interface is pure read-only: It never returns any Python objects but only extracts data from numpy arrays. Eg:
> 
> #include "numpy/arrayobject.h"
> 
> void PrimitiveManager::deleteAtoms(PyObject * numpy_indices)
> {
>     // Extract number of indices
>     int const n = static_cast<int>(PyArray_DIMS(numpy_indices)[0]);
>     long * const indices = (long *) PyArray_DATA(numpy_indices);
> 
>     // Delete atoms in buffer
>     for (int i = 0; i < n; ++i)
>     {
>         // Do stuff
>     }
> }
> 
> Now, when I compile the code with g++, I get the following warning:
> 
>   numpy/core/include/numpy/__multiarray_api.h:1532: warning: ‘int _import_array()’ defined but not used
> 
> Do I need to call '_import_array()' somewhere? Am I doing something potentially nasty?
> 
> Best regards,
> 
> Mads
> 
> 
> 
> 
> 
>  -- 
> +-----------------------------------------------------+
> | Mads Ipsen                                          |
> +----------------------+------------------------------+
> | Gåsebæksvej 7, 4. tv |                              |
> | DK-2500 Valby        | phone:          +45-29716388 |
> | Denmark              | email:  mads.ipsen at gmail.com |
> +----------------------+------------------------------+
> 
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20120214/f22c1df6/attachment.html>


More information about the NumPy-Discussion mailing list