在Python端,我可以创建新的numpy记录数组,如下所示:
numpy.zeros((3,), dtype=[('a', 'i4'), ('b', 'U5')])
我如何在C程序中做同样的事情呢?我想我必须调用PyArray_SimpleNewFromDescr(nd, dims, descr),但是我如何构造一个适合作为PyArray_SimpleNewFromDescr的第三个参数传递的PyArray_Descr呢?
PyArray_SimpleNewFromDescr(nd, dims, descr)
PyArray_SimpleNewFromDescr
PyArray_Descr
mec1mxoz1#
使用PyArray_DescrConverter。下面是一个示例:
PyArray_DescrConverter
#include <Python.h> #include <stdio.h> #include <numpy/arrayobject.h> int main(int argc, char *argv[]) { int dims[] = { 2, 3 }; PyObject *op, *array; PyArray_Descr *descr; Py_Initialize(); import_array(); op = Py_BuildValue("[(s, s), (s, s)]", "a", "i4", "b", "U5"); PyArray_DescrConverter(op, &descr); Py_DECREF(op); array = PyArray_SimpleNewFromDescr(2, dims, descr); PyObject_Print(array, stdout, 0); printf("\n"); Py_DECREF(array); return 0; }
感谢Adam Rosenfield指出Guide to NumPy的第13.3.10节。
2wnc66cl2#
请参见Guide to NumPy,第13.3.10节。有很多不同的方法来创建描述符,尽管它远不如编写[('a', 'i4'), ('b', 'U5')]那么简单。
[('a', 'i4'), ('b', 'U5')]
2条答案
按热度按时间mec1mxoz1#
使用
PyArray_DescrConverter
。下面是一个示例:感谢Adam Rosenfield指出Guide to NumPy的第13.3.10节。
2wnc66cl2#
请参见Guide to NumPy,第13.3.10节。有很多不同的方法来创建描述符,尽管它远不如编写
[('a', 'i4'), ('b', 'U5')]
那么简单。