I have an old Numarray C extension (or, rather, a Python package
containing a C extension) that I would like to convert to numpy
(in a way that is likely to be supported long-term).
Options I have found include:
- Use the new numpy extension. This seems likely to be fast and
future-proof. But I am finding the documentation slow going. Does anyone
know of a simple example (e.g. read in an array, create a new array)?
- Use the Numarray compatible C API. Simple (and takes advantage of the
nice Numarray tutorial example for documentation), but will this be
supported in the long term?
- Switch to ctypes. Simple in concept. But I'm wondering if I can get
distutils to build the resulting package.
- Use SWIG. I have some experience with it, but not with numpy arrays.
- Use Cython to replace the C code. No idea if this is a long-term
Another option is to try to rewrite in pure python. Perhaps the numpy
indexing is sophisticated enough to allow an efficient solution. The C
extension computes a radial profile from a 2-d masked array:
radProf(r)= sum of all unmasked pixels at radius r about some
specified center index
I can easily generate (and cache) a 2-d array of radius index, but is it
possible to use that to efficiently generate the desired sum?