使用 SWIG 的几个 numpy 数组
Posted
技术标签:
【中文标题】使用 SWIG 的几个 numpy 数组【英文标题】:Several numpy arrays with SWIG 【发布时间】:2010-04-20 09:48:46 【问题描述】:我正在使用 SWIG 将 numpy 数组从 Python 传递到 C++ 代码:
%include "numpy.i"
%init %
import_array();
%
%apply (float* INPLACE_ARRAY1, int DIM1) (float* data, int n);
class Class
public:
void test(float* data, int n)
//...
;
在 Python 中:
c = Class()
a = zeros(5)
c.test(a)
这可行,但如何将多个 numpy 数组传递给同一个函数?
【问题讨论】:
【参考方案1】:我从我的一位同事那里找到了答案:
%apply (float* INPLACE_ARRAY1, int DIM1) (float* data1, int n1), (float* data2, int n2);
class Class
public:
void test(float* data1, int n1, float* data2, int n2)
//...
;
现在两个 numpy 数组被传递给 Class::test。
【讨论】:
您可以通过将类型映射同时应用于两个输入对来稍微缩短应用指令:%apply (float* INPLACE_ARRAY1, int DIM1) (float* data1, int n1), (float* data2, int n2);以上是关于使用 SWIG 的几个 numpy 数组的主要内容,如果未能解决你的问题,请参考以下文章
使用 swig 使 C++ 类看起来像一个 numpy 数组
如何使用 SWIG 将 numpy 数组转换为 vector<int>&(参考)