numpy/arrayobject.h和C扩展

numpy/arrayobject.h和C扩展,c,numpy,matrix,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

我打算用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();
    ...
}
#包括
#包括
静态PyObject*foo(PyObject*self,PyObject*args)
{
一些数组;
if(!PyArg_ParseTuple(args,“O”和&x)
返回NULL;
double*data=x->一些函数获取原始数据();
...
}
我在寻找什么类型的数组,以及获取原始数据()的函数。谢谢!

基于:

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

double* data = (double*) PyArray_DATA(x);
这是正确的路线

注意,还需要调用import_array()