[C++-sig] Numpy ndarray as argument or return value using boost python
Anthony Foglia
AFoglia at princeton.com
Mon Oct 12 19:54:43 CEST 2009
Pim Schellart wrote:
> I also posted this to the boost users list.
Most of the Boost Python discussion goes on here, so this is probably
the better group.
> I want to give a numpy ndarray as an argument to a c++ method,
> calculate something and return the output as an ndarray to Python.
> I would prefer not to use another library (such as PyUblas) for this
> so I do not have to add another dependency to my program.
I did this myself last year, and here's what I can tell you.
> 1. Is boost python still maintained or should I switch to another tool.
Yes it is maintained.
> 2. Is numpy supported, and if so,
Yes and no. Boost.Python has a header for dealing with Numeric arrays
that works just as well with NumPy.
<http://www.boost.org/doc/libs/1_40_0/libs/python/doc/v2/numeric.html>.
But it works by passing all methods through the Python interpreter, so
you will see no increase in speed compared to using a more low-level
NumPy API.
There is num_util header created by a third-party that claims to do a
lot of the wrapping.
<http://www.eos.ubc.ca/research/clouds/software/pythonlibs/num_util/num_util_release2/>
I ended up not using it, but instead going getting using NumPy's C API
directly and keeping the pointers wrapped in boost::python::handle
objects as much as possible.
> 3. can someone give me a basic example of how to use it.
The num_util page has an example of their code.
--
Anthony Foglia
Princeton Consultants
(609) 987-8787 x233
More information about the Cplusplus-sig
mailing list