将C缓冲区的内容复制到numpy数组

2024-09-28 05:43:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我在C中有一个函数是这样的:

源文件

// foo.cpp
int foo(int input1, double *output1, int size1, int* output2, int size2)
{
// does stuff and allocate space for output1 and output2
    return 0;
}

头文件

^{pr2}$

在Cython中,我需要将output1和{}转换为numpy数组,因此在我的foo.pyx中,我要执行以下步骤:

cdef extern from "foo.h":
    cdef int foo(int input1, double* output1, int size1, double* output2, int size2) 

cdef double* ptnOutput1
cdef int* ptnOutput2

foo(1, ptnOutput1, 10, ptnOutput2, 10)

但是现在我不能得到2np.array形式的输出。如何将指针ptnOutput1ptnOutput2与两个numpy数组对齐? 我试过np.frombuffernp.PyArray_SimpleNewFromData但没有成功。我总是犯分割错误。 你知道怎么正确地做吗?在


Tags: andnumpyfoonp数组intdoublecdef
1条回答
网友
1楼 · 发布于 2024-09-28 05:43:02

numpy文档提到

In order to make use of the C-API from another extension module, the import_array function must be called

您似乎遇到了分段错误,因为您的代码中没有包含import\u数组。在

import_array的内部机制比您预期的要复杂,因为它实际上是一个非常长的宏,而不是一个普通函数。有关详细信息,请参阅this

相关问题 更多 >

    热门问题