[Numpy-discussion] (newbie) How can I use NumPy to wrap my C++ class with 2-dimensional arrays?
Christopher Barker
Chris.Barker at noaa.gov
Mon Aug 3 19:17:10 EDT 2009
Raymond de Vries wrote:
> Oops, I guess I didn't express myself clearly enough: I have used plain
> Python c-api (in my case a list of lists for my 2-dimensional arrays)
> for my typemaps. Sorry for the unclearness. Actually because NumPy is
> not my cup of tea...
Well, for almost any purpose, numpy arrays are a better fit for a 2-d
array of numbers than a list of lists, so I'm not sure what kind of tea
you like ;-)
> Especially because Matthieu suggested that I should
> convert my data into a contiguous array.
a Python list can't share a pointer with your C++ data type anyway, so
you'll have to copy anyway -- why not make a contiguous array?
If you need a "ragged" array, then it's a different story, but a list of
numpy arrays may be a better fit.
> So no matter what I use, either swig, cython, or.. I still have the
> NumPy issue.
True, it's probably best to decide what sort of representation you want
in Python, then decide how to build your wrappers. If you have a big 2-d
array in C++, numpy is the obvious choice.
Another choice is a wrapper around your C++ class -- don't convert to a
python type at all. Depending on what you need to do, it may be OK to
lost a lot of functionality numpy give you.
This is how the SWIG C++ vector wrappers work, for instance.
-Chris
--
Christopher Barker, Ph.D.
Oceanographer
Emergency Response Division
NOAA/NOS/OR&R (206) 526-6959 voice
7600 Sand Point Way NE (206) 526-6329 fax
Seattle, WA 98115 (206) 526-6317 main reception
Chris.Barker at noaa.gov
More information about the NumPy-Discussion
mailing list