在python swig中读取c ++ 2d数组

Reading c++ 2d array in python swig

本文关键字:2d 数组 读取 python swig      更新时间:2023-10-16

>C++ part 我有一个类a,其中包含一个公共变量 2d int 数组b,我想用 python 打印出来。(我想访问它的方式是a.b)

我已经能够包装大部分代码,现在我可以在 python 中调用 a 类中的大多数函数。

那么我如何在 python 中读取 b?如何使用numpy.i将其读入numpy数组(我找到了一些有关如何使用非变量函数的解决方案)?有没有办法读取 c++ 库中的任何数组?或者我必须处理接口文件中的每个变量。

现在,当我尝试在 Python 中使用它时,b<Swig Object of type 'int (*)[24]' at 0x02F65158>

附言: 1.如果可能的话,我不想修改cpp部分。

  1. 我正在尝试访问变量,而不是函数。

所以不要把我推荐给不能真正回答我问题的链接,谢谢。

你会发现,如果你使用一维数组来访问元素,那么在语言之间来回传递东西要容易得多,例如arr[y*WIDTH+x].

由于您在C++操作,您甚至可以使用漂亮的operator()(int x, int y)方法将这些数组包装在类中,以便在C++端使用。

事实上,这是 Numpy 用于数组的内部表示:它们都是一维的。

如果您可以添加C++定义的代码片段(如果使用int**,则为C),您的问题将更容易回答。当你说"2d int array"时,你是指一般的int**吗?数组大小是否提前知道?

无论如何,您可能可以使用numpy.i,但这取决于数组的细节。

看到这个有点相关的问题: 摆动和多维数组