我想要做的,基本上是將這個 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 代碼的最簡潔方法是什么?
uj5u.com熱心網友回復:
假設你每行一行一行
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在每一行上放置一行,但是對于一維陣列,每個元素都被視為一行。因此,我將它重塑為二維(reshape幾乎沒有成本;它只是改變了解釋)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/457521.html
