gpt4 book ai didi

python - 带有 SWIG 未知长度数组的 NumPy C 扩展

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

我想用 SWIG 包装一个 C 函数。该函数将一对数组(长度相同)作为输入并返回另外三个数组。然而,不可能事先预测返回数组的长度,这些是在函数中动态分配的。是否可以用 SWIG(使用 numpy.i)包装这样的函数,如果可以,如何包装?简化的函数声明如下所示:

int func(double **a, double **b, long int *N, double *x, double *y, long int *Nx, long int *Ny);

NxNy 事先已知,但 N(ab 的长度) 不是并且 ab 在函数中分配(使用 malloc)。

最佳答案

SWIG(或与此相关的任何其他 Python 包装器生成器)似乎无法做到这一点。我最终手动编写了 Python 包装器,这实际上非常简单,使用 PyArray_SimpleNewPyArray_SimpleNewFromData 创建输出数组。对于后者,必须格外小心,以免产生内存泄漏。玩了一会儿后,我发现前者与简单的 memcpy 相结合会更安全。

关于python - 带有 SWIG 未知长度数组的 NumPy C 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7929162/

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