[Numpy-discussion] ndarray and the buffer protocol

Dag Sverre Seljebotn dagss at student.matnat.uio.no
Thu Jul 9 04:19:33 EDT 2009


> Hello all,
>
> (resending for the Nth time, as the previous attempts
>  didn't make it to the list)
>
> I'm new to this list (and numpy is mostly new to me :-).
>
> Using python 2.6 and numpy 1.3.
>
> My plan is to write some C extensions that will perform
> rather specialised processing on multichannel digital audio
> data stored stored in numpy arrays.
>
> Sinc 2.6 python has a new buffer protocol, and referring
> to this, the numpy website states rather fuzzily:
>
>   Of course, numpy makes a good interoperation library to
>   support the buffer protocol. Numpy can both consume and
>   produce protocol-supporting objects. A numpy ndarray can
>   be constructed as a view of an object supporting the
>   buffer protocol, and a numpy ndarray supports buffer
>   object views of its data.
>
> I'd want the C code to be based on using the new buffer
> protocol - everything else is marked as 'deprecated', also
> in the numpy docs.
>
> But it remains quite unclear if numpy 1.3 does or does not
> support this, and if yes, how.

It does not support the new buffer protocol -- the stuff on the web page
refers to the old buffer protocol.

You might consider using Cython for at least smaller parts of your work --
it has support for the new buffer protocol as well as emulating it for
NumPy arrays for any NumPy version.

http://wiki.cython.org/enhancements/buffer

As well as Cython/Includes/numpy.pxd within the Cython distribution.

A short look at numpy.pxd will tell you how to write NumPy-specific access
to get the same information that the buffer protocol would have given you,
if you want to stay in C.

Dag Sverre




More information about the NumPy-Discussion mailing list