我有以下最小的 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?
任何帮助表示赞赏。