在 Python 中使用 savetxt 在单行上写入数据

Writing data on a single line using savetxt in Python

我想做的,基本上是将这个 Fortran 代码转换成 Python:

open (1,file='file',form='formatted')       
write (1,*) na,nb
write (1,*) (a(i),i=1,na) 
write (1,*) (b(j),j=1,nb)
do i=1,na
   write (1,*) (f1(i,j),j=1,nb)
   write (1,*) (f2(i,j),j=1,nb)
enddo

所以我想到了使用savetxt。我发现的第一个困难是第一行,其中 na 和 nb 应该保存在文件中的同一行。我发现您可以通过以下方式实现此目的:

np.savetxt("file.txt",(na,nb),fmt='%s',newline=" ")

问题是每当我想将第二行写为:

f=open("file.txt",'f')
np.savetxt(f,a,fmt='%s',newline=" ")

数组 a 被添加到与 na 和 nb 相同的行中,而我希望它在新的行中也是如此。我不知道该怎么做。我认为使用 newline=" ",我只需要将 " " 添加到 na,nb,但它不起作用。或者,编写 Fortran 代码最干净的方法是什么?

假设你在每一行上一行一行,比如

1.23 1.23 1.23 1.23
2.34 2.34 2.34 2.34

那么像这样的东西应该可以工作:

f = open('file.txt','w')
print(na, nb, file=f)
np.savetxt(f, a.reshape(1,na), fmt='%s', delimiter=' ')
np.savetxt(f, b.reshape(1,nb), fmt='%s', delimiter=' ')
for row in range(f1.shape[0]):
  np.savetxt(f, f1[row], fmt='%s', delimiter=' ')
  np.savetxt(f, f2[row], fmt='%s', delimiter=' ')

savetxt 每行一行,但对于一维数组,每个元素都被视为一行。因此,我将其重塑为 2-D(reshape 几乎没有任何成本;它只是改变了解释)。