Python与C语言混合编程之复数数组的参数传递方法( 三 )

下面给出Python中转为numpy数组的调用方法 。

Python中调用方法

如果像前面几篇文章中所示 , 考虑将上面函数中复数数组x直接使用ctypes模块声明为复数类型的指针 , 即形如“POINT(c_double)”的形式 , 但是 , 在ctypes模块中声明指针的类型时 , 该模块中没有c_complex类型的指针 , 所以这种方式不容易实现 。

一般情况下 , 在C语言与Python语言通过DLL文件进行混合编程时 , 可将DLL函数中的数组类型转换为numpy库里面的数组类型 , 这样做的好处是可以借助于numpy强大的分析处理功能对数据直接作后续处理 。

在numpy库中 , 直接支持复数数组类型的声明 。

按照这种思路 , 在Python中的函数声明及调用方式如下:

上面方法在声明函数的参数类型时 , 对于参数x和y复数类型的指针变量 , 使用np.ctypeslib.ndpointer(dtype=np.complex128ndim=1flags=\"C_CONTIGUOUS\")直接将numpy中的数组声明为C语言中的复数数组类型 , 最后调用时 , 将numpy中的数组类型a和b传到该函数中即可 。

推荐阅读