swig numpy多个矩阵和数组输入

2024-10-03 02:34:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用SWIG和numpytypemaps将一个小C函数转换成python

此函数定义如下

void nw(int* D, int Dx, int Dy, int* mat, int mx, int my, char *xstr, int xL,char *ystr, int yL);

我的接口文件如下

^{pr2}$

为了测试它,我使用了以下输入

D = numpy.zeros((5,5),numpy.int)
mat = numpy.array([[1, 0, 0, 0, 0, 0],
                   [0, 1, 0, 0, 0, 0],
                   [0, 0, 1, 0, 0, 0],
                   [0, 0, 0, 1, 0, 0],
                   [0, 0, 0, 0, 1, 0],
                   [0, 0, 0, 0, 0, 1]],numpy.int)
x = numpy.array(list("ABCD"))
y = numpy.array(list("ABCD"))
import nw
nw.nw(D,mat,x,y)

但当我运行它时,我得到以下结果

TypeError: nw() takes exactly 6 arguments (4 given)

我真的很困惑这些论点是如何定义的。这里有人知道为什么有6个论点,这些论点是什么吗?谢谢!在


Tags: 函数numpy定义arraylistswigintabcd
1条回答
网友
1楼 · 发布于 2024-10-03 02:34:43

好吧,我想我已经解决了这个问题。在

事实证明,SWIG真的不喜欢我为cstring所做的apply指令。在

我本应该按照下面的指示来代替。在

%apply (char *STRING, int LENGTH) {(char *xstr, int xL),(char *ystr, int yL)}

我应该更仔细地看食谱的,哈哈

相关问题 更多 >