多个numpy数组与SWIG

4 投票
1 回答
3092 浏览
提问于 2025-04-15 21:49

我正在使用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 个回答

9

我从我的一个同事那里找到了答案:

%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这个类。

撰写回答