numpy / arrayobject.h和C扩展名

时间:2014-06-30 19:23:40

标签: c numpy matrix

我打算在C代码中对numpy数组进行一些计算。有人可以指向一些关于如何从numpy.matrix对象中提取double * C数组的文档吗?所以我可以有这样的C代码:

#include <Python.h>
#include <numpy_arrayobject.h>
static PyObject* foo(PyObject* self, PyObject *args)
{
    some_numpy_array_t *x;
    if (!PyArg_ParseTuple(args, "O", &x)
        return NULL;
    double* data = x->some_function_to_get_the_raw_data();
    ...
}

我正在寻找some_numpy_array_t的类型以及some_function_to_get_the_raw_data()应该在实际代码中的函数。谢谢!

1 个答案:

答案 0 :(得分:1)

基于:

http://stuff.mit.edu/afs/sipb/project/python/src/python-numeric-22.0/doc/www.pfdubois.com/numpy/html2/numpy-13.html

需要PyArrayObject和PyArray_DATA()。后者是宏返回void *,所以

double* data = (double*) PyArray_DATA(x);

是正确的行。

注意还需要调用import_array()。