[Numpy-discussion] Initializing array from buffer

Sturla Molden sturla.molden at gmail.com
Sun Nov 16 19:27:51 EST 2014


Andrea Arteaga <andyspiros at gmail.com> wrote:

> My use case is the following: we have a some 3D arrays in our C++
> framework. The ordering of the elements in these arrays is neither C nor
> Fortran style: it might be IJK (i.e. C style, 3rd dimension contiguous in
> memory), KJI (i.e. Fortran style, first dimension contiguous) or, e.g. IKJ.
> Moreover we put some padding to optimize aligned access. This kind of
> memory structure cannot be just expressed as 'C' or 'Fortran', but it can
> be perfectly expressed using the Python buffer protocol by providing the
> shape and the strides. We would like to export this structure to a numpy
> array that should be able of accessing the same memory locations in a
> consistent way and make some operations like initializing the content or
> plotting it.
> 
> Is this currently possible?
> If not, is it planned to implement such a feature?

If you are already coding in C++, just use PyArray_New or
PyArray_NewFromDescr:

http://docs.scipy.org/doc/numpy/reference/c-api.array.html#c.PyArray_New
http://docs.scipy.org/doc/numpy/reference/c-api.array.html#c.PyArray_NewFromDescr

Apart from that, numpy.array and numpy.asarray can also accept a PEP 3118
buffer. 

Sturla




More information about the NumPy-Discussion mailing list