JMzance JMzance - 9 months ago 54
Python Question

Converting a numpy array into a c++ native vector

I currently have a python C extension which takes a PyObject list and I can parse is using 'PySequence_Fast'.

Is there an equivalent command which would allow my to parse a one dimensional numpy array?



The function PyArray_FROM_OTF converts to a numpy array (unless the argument is already a numpy array when it just returns it with an incremented refcount). See e.g.

PyObject* definitely_numpy_array = PyArray_FROM_OTF(might_be_numpy_array,
                 NPY_DOUBLE, // you need to specify a type
                 0 // there's assorted flags you can add to describe the exact format you want which are described in the documentation

This can work on any number of dimensions so if you strictly require 1D you'll have to add a check. It also requires the numpy headers to be included ("numpy/arrayobject.h")