下面的Python代码会根据值ndim
和0
生成所有大小为1
的不同向量:
import itertools
ndim = 8
A = list(itertools.product([0,1], repeat=ndim))
print (A)
在Fortran中可以这样做吗?那么Fortran中的intertools.product
相当于什么?
答案 0 :(得分:0)
是的,它可以在Fortran中做同样的事情,尽管有些人可能认为它有点麻烦。等同于itertools.product
的是什么?我没有itertools.product
首先出现的问题。但这个小功能似乎做你想要的......
FUNCTION bit_vectors(ndim) RESULT(bv)
INTEGER, INTENT(in) :: ndim
INTEGER, DIMENSION(0:2**ndim-1,ndim) :: bv
INTEGER :: jx
INTEGER, DIMENSION(0:ndim-1) :: bits
bits = [(jx,jx=0,ndim-1)]
DO jx = 0, 2**ndim-1
bv(jx,:) = MERGE(1,0,BTEST(jx,bits))
END DO
END FUNCTION bit_vectors
我想你可以将这种方法概括为更广泛的目的。