【问题标题】:f2py array valued functionsf2py 数组值函数
【发布时间】:2012-06-10 09:32:03
【问题描述】:

最新版本的 f2py 是否支持包装数组值的 fortran 函数? 在一些古老的文档中,这不受支持。现在怎么样了?

例如,我们将下面的函数保存为 func.f95。

function func(x)
    implicit none
    double precision :: x(:),func(size(x))
    integer :: i
    do i=1,size(x)
        func(i) = i*x(i)
    end do
end function

我用f2py --fcompiler=gnu95 -c -m func func.f95编译这个

那么让下面的python代码为test_func.py

import func
from numpy import array

x = array(xrange(1,10),dtype='float64')
print 'x=',x

y = func.func(x)
print 'func(x)=',y


python test_func.py 的输出是

x= [ 1.  2.  3.  4.  5.  6.  7.  8.  9.]
Segmentation fault

【问题讨论】:

标签: python function numpy fortran f2py


【解决方案1】:

f2py 的机制将 Fortran 子例程 转换为 python 函数。它不明白如何将 Fortran function 转换为 python 函数。我发现我需要用一个子例程包装所有 Fortran 函数,或者更好的是,将它们重写为子例程。

【讨论】:

  • f2py 那个强大吗?以这种特殊的方式编写整个 fortran 代码库是否足够可靠?
  • 我从来没有遇到过可靠性问题,但就像我说的,这令人沮丧。就个人而言,由于它施加的限制,我只将它用于小型项目。还有一个工具fwrap,应该比f2py好,但是我没有测试过。
猜你喜欢
  • 2013-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-12
  • 2019-07-03
  • 1970-01-01
相关资源
最近更新 更多