Fortran双精度转换为Python float

时间:2014-04-15 05:27:55

标签: python numpy fortran90 gfortran f2py

我在generation.f90

中有以下子程序
SUBROUTINE generation(t, prob)
    IMPLICIT NONE

    INTEGER, INTENT(IN) :: t
    REAL(8), INTENT(OUT) :: prob
    INTEGER :: nT2, c

    Do some stuff with t, nT2 and c

    prob = nT2/(DBLE(1.0)*c)
END SUBROUTINE generation

我想在Python中使用它,所以我用f2py

包装它

f2py -c -m generation generation.f90 --fcompiler=gnu95

然后在ipython我做

from generation import *
a = generation(10000); type(a)

我得到float。我检查了用

生成的C文件testmodule.c

f2py generation.f90 -m test

probdouble类型。我希望type(a)numpy.float64。我该怎么办?我对Fortran和f2py都很新。

2 个答案:

答案 0 :(得分:2)

正如另一个回答所提到的,Python的float已经是一个双精度数字。

但是,如果要转换它,可以使用

import numpy as np
a = np.float64(a)

有关转化的详细信息,请参阅numpy documentation

答案 1 :(得分:1)

默认情况下,python中的浮点数是双精度。更难的问题是获得单精度浮点数,这需要numpy或其他一些数学包。但在你的情况下,你不应该有任何顾虑。