我正在尝试获取列表作为Python C扩展中的参数,函数和包装器(省略了函数的表):
#include <Python.h>
int MyFunction(int a_triplet[]){
printf("%i\n", a_triplet[0]);
return 0;
}
static PyObject* any_function(PyObject* self, PyObject* args)
{
PyObject *lst;
if (!PyArg_ParseTuple(args, "O", &lst))
return NULL;
return Py_BuildValue("[i]", MyFunction(lst)); // Returns error
}
我在最后一行有些迷路:
return Py_BuildValue("[i]", MyFunction(lst));
在Python函数中,我有这个:
print (Module.any_function([67, 93, 56]))
如何将列表通过Python传递给C扩展?我迷路了,因为如果我编写一个函数和一个包装器来接收整数,那么效果很好:
#include <Python.h>
int MyFunction(int n){
printf("%i", n);
return 0;
}
static PyObject* alice_bob(PyObject* self, PyObject* args)
{
int n;
if (!PyArg_ParseTuple(args, "i", &n))
return NULL;
return Py_BuildValue("i", MyFunction(n));
}
答案 0 :(得分:0)
Numpy API具有一个PyArray_Mean函数,可以完成您要执行的操作:
static PyObject *func1(PyObject *self, PyObject *args) { PyArrayObject *X, *meanX; int axis; PyArg_ParseTuple(args, "O!i", &PyArray_Type, &X, &axis); meanX = (PyArrayObject *) PyArray_Mean(X, axis, NPY_DOUBLE, NULL); return PyArray_Return(meanX); }