从python调用LAPACK驱动程序/函数

时间:2013-08-12 17:01:17

标签: python scipy cython lapack f2py

我需要在python中使用lapack函数'DGGLSE'来解决约束的最小二乘问题。

我发现lapack的一些低级函数可以在scipy中找到如下 http://docs.scipy.org/doc/scipy/reference/linalg.lapack.html 但是我感兴趣的那个没有被包括在内,并且似乎大多数lapack的驱动程序代码都不包括在内。

我想知道我是否有办法做到这一点。谢谢。 -Yan

2 个答案:

答案 0 :(得分:0)

我只有一点包装Fortran的经验,但据我所知,包装尚未包含在SciPy中的LAPACK函数的标准方法是使用NumPy附带的工具f2py。可以在http://wiki.scipy.org/Cookbook/F2Py#head-9c22e0d6fa6b16650feea2c271233a8c47e8d051

找到一些基本说明

你也可以通过Cython包装它。 这样做,您编译Fortran文件并链接它,如http://fortran90.org/src/best-practices.html#interfacing-with-python所示 它描述了如何使用Cython或ctypes来包装Fortran子例程。 该特定示例可在https://github.com/certik/fortran90_question/tree/master/fcython_mesh在线获取 确保你注意阵列在内存中的排列方式(C-contiguous vs. Fortran-contiguous)。

答案 1 :(得分:0)

SciPy 1.0版中包含

?GGLSE例程系列。您可以先调用?gglse_lwork以获得硬件上的最佳块大小,然后将其用作?gglse的参数。

您可以通过

检查ipython控制台上的签名
scipy.linalg.lapack.dgglse?

或使用帮助等。