gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 05:26:41 25 4
gpt4 key购买 nike

我在 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;
}

头文件

// foo.h
int foo(int input1, double *output1, int size1, int* output2, int size2);

在 Cython 中,我需要将 output1output2 转换为 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)

但现在我无法以两个 np.array 的形式获得输出。我应该如何将指针 ptnOutput1ptnOutput2 对齐到两个 numpy 数组?我试过 np.frombuffer 以及 np.PyArray_SimpleNewFromData 但没有成功。我总是遇到段错误。知道如何正确地做到这一点吗?

最佳答案

numpy 文档提到

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

您似乎遇到了段错误,因为您没有在代码中包含 import_array。

import_array 的内部机制比您预期的要复杂,因为它实际上是一个非常冗长的宏,而不是一个简单的函数。引用this了解更多信息

关于python - 将 C 缓冲区的内容复制到 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40427178/

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