gpt4 book ai didi

python - 如何从 C 创建一个 numpy 记录数组

转载 作者:太空狗 更新时间:2023-10-29 20:44:26 26 4
gpt4 key购买 nike

在 Python 方面,我可以创建新的 numpy 记录数组,如下所示:

numpy.zeros((3,), dtype=[('a', 'i4'), ('b', 'U5')])

如何从 C 程序执行相同的操作?我想我必须调用 PyArray_SimpleNewFromDescr(nd, dims, descr),但是我如何构造一个适合作为第三个参数传递给 PyArray_SimpleNewFromDescr 的 PyArray_Descr ?

最佳答案

使用 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 节.

关于python - 如何从 C 创建一个 numpy 记录数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/214549/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com