Bo Peng wrote:
Dear list,

I am writing a Python extension module that needs a way to expose pieces of a big C array to python. Currently, I am using NumPy like the following:

PyObject* res = PyArray_FromDimsAndData(1, int*dim, PyArray_DOUBLE, char*buf);

Users will get a Numeric Array object and can change its values (and actually change the underlying C array).

This works fine. However, when I deliver my module, I find NumPy is unnecessarily large for this simple task. As a matter of fact, I had to build from source NumPy, ATLAS etc on Solaris, Linux, Mac.... and if a user would like to use my module, he has to do the same thing!

Python's array module is built-in, easy to use, but *without* a FromLenAndData function! Even the buffer interface provides only 'get buffer' but no 'set buffer' functions. Could anyone tell me how I can create an array object from existing data? Some vague ideas might be used: 1. PyCObject (I do not really understand the manual), 2. copy and modify arraymodule.c to my project (doable at all? License issue?) 3. Create an array object and hack it. (no api to do this.)

I would strongly suggest an arraymodule.h with Array_FromLenAndData.

Many thanks in advance.
Bo
I don't know how much this will help but when I am faced with a problem like this, I use Pyrex and look at the generated code. All you need to do in Pyrex is import the array module and create your array like you would in Python. To get the data into the array you will need to use the buffer interface and fill it in from your C code.
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to