使用 f2py 在 python 中使用 Fortran 基本函数

5 python fortran numpy f2py

我有以下最小的 Fortran 示例,我想使用以下命令进行转换f2py

Fortran 模块utils_test.f90

module utils_test

contains
    elemental real(8) function prod(a, b)
        real(8), intent(in) :: a, b
        prod = a*b
    end function
end module utils_test
Run Code Online (Sandbox Code Playgroud)

使用 f2py:

module utils_test

contains
    elemental real(8) function prod(a, b)
        real(8), intent(in) :: a, b
        prod = a*b
    end function
end module utils_test
Run Code Online (Sandbox Code Playgroud)

在 python 中,我可以按如下方式使用它:

python3 -m numpy.f2py -c utils_test.f9 -m utils_test
Run Code Online (Sandbox Code Playgroud)

输出是:

Scalar product 15.0
Array element-wise product: 10.0
Run Code Online (Sandbox Code Playgroud)

x在第二个示例中,它仅输出和only第一个元素的乘积y

我可以通过向量化函数来解决这个问题utils_test.prod

prod = np.vectorize(utils_test.prod)

是否可以在 python 中获得预期结果而无需手动向量化函数?换句话说,如果原始 Fortran 函数是 ,f2py 是否可以自动向量化该函数elemental

任何帮助表示赞赏。