[SciPy-user] Passing numpy array to a c function
Stéfan van der Walt
stefan at sun.ac.za
Sun Apr 20 17:19:14 EDT 2008
Hi Chris
On 20/04/2008, Christopher Brown <c-b at asu.edu> wrote:
> I am trying to pass a numpy array of float64's to a c function, and I am
> not having much luck. I have tried every example I could find, and based
> on everything I have read, this seems (to me) like it should work.
Your example works perfectly over here.
> #include "Python.h"
> #include "Numeric/arrayobject.h"
You probably want
#include "numpy/arrayobject.h"
> PyObject* my_c_function(PyObject* self, PyObject* args) {
> PyArrayObject *array;
> int i;
> if (!PyArg_ParseTuple(args, "O|i", &array, &i))
> return NULL;
> printf("length is: %5.0f\n",i);
> printf("type_num is: %3.0f\n",array->descr->type_num);
These should use "%d" instead of "%f".
In [5]: x = np.array([1,2,3])
In [6]: boo.my_c_function(x,len(x))
length is: 3
type_num is: 7
I attach the source code and setup.py file to build it:
python setup.py build_ext -i
Regards
Stéfan
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: boo.c
URL: <http://mail.scipy.org/pipermail/scipy-user/attachments/20080420/b4bbce82/attachment.c>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: setup.py
Type: application/octet-stream
Size: 231 bytes
Desc: not available
URL: <http://mail.scipy.org/pipermail/scipy-user/attachments/20080420/b4bbce82/attachment.obj>
More information about the SciPy-User
mailing list