C++ 几个带SWIG的numpy阵列
我使用SWIG将Python数组从NyPy传递到C++代码:C++ 几个带SWIG的numpy阵列,c++,python,numpy,swig,C++,Python,Numpy,Swig,我使用SWIG将Python数组从NyPy传递到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 =
%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数组传递给同一个函数呢?我从一个同事那里找到了答案:
%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。您可以通过同时将typemap应用于两个输入对来稍微缩短apply指令:%apply(float*INPLACE_ARRAY1,int DIM1){(float*data1,int n1),(float*data2,int n2)};