下面是我想用f2py
转换的最小Fortran示例:
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
使用f2py:
python3 -m numpy.f2py -c utils_test.f9 -m utils_test
在python中,我可以如下使用它:
import numpy as np
from utils_test import utils_test
x1 = 5.0
y1 = 3.0
print("Scalar product", utils_test.prod(x1, y1)) # The result is 15.0
x = np.linspace(1, 5, 5) # Numpy array
y = np.linspace(10, 15, 5) # Numpy array
print("Array element-wise product:", utils_test.prod(x, y)) # this outputs 10.0 not an array
输出为:
Scalar product 15.0
Array element-wise product: 10.0
在第二个示例中,它只输出x
和y
的第一个元素的乘积。你知道吗
我可以通过向量化函数utils_test.prod
来解决这个问题:
prod = np.vectorize(utils_test.prod)
有没有可能在python中获得预期的结果,而不必手动对函数进行矢量化?换句话说,如果原来的Fortran函数是elemental
,那么f2py是否可以自动向量化函数?你知道吗
感谢您的帮助。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐