0

我正在将函数的输出写入文件,但是如果写入的数字末尾有 e+01,它会将其中一个数字写入下一行。例如

 0.12605695   1.64761066   1.55001798   0.01785089  15.80005801
 0.12231149   1.65899943   1.56369755   0.01511221  10.45653689
 0.1238494   1.67704048  1.59633667  0.00687468  0.96146016
 1.10437450e-01   1.62918081e+00   1.56024230e+00   1.82792879e-03
 -2.05519064e+00
 1.04326863e-01   1.63545256e+00   1.58687599e+00  -4.50753949e-03
 -6.40408013e+00

每行应该有五个数字,这是我将数字写入文件的代码部分,

 kop=open('new.txt', 'w')
 results=PCA(kk)
 res=results.mu
 print results.mu
 kop.write(str(res)+'\n')
 kop.close() 

我如何让他们写到一行而不是下一行?我需要它们都在正确的行上,因为当我在另一段代码中使用 numpy.genfromtxt 时,它要求它们都在正确的列中。

4

3 回答 3

0

假设可以像普通列表一样迭代,这个片段应该通过使用模块results.mu来满足你的需要:csv

import csv

with open('new.txt', 'w') as f:
   writer = csv.writer(f, delimiter="\t")
   writer.writerows(results.mu)
于 2013-08-06T10:39:42.413 回答
0

根据result.mu您可以尝试使用的类型rstrip()

 results=PCA(kk)
 res=results.mu
 print results.mu
 for i,y in enumerate(result.mu):
     result[i] = y.rstrip()
 kop.write(str(res)+'\n')
 kop.close()
于 2013-08-06T10:43:31.207 回答
0

这就是答案,我只是没有意识到这是一个 numpy 数组。

 kop=open('new.txt', 'w')
 results=PCA(kk)
 res=results.mu
 res=np.ndarray.tolist(res)
 print results.mu
 kop.write(str(res)+'\n')
 kop.close() 
于 2013-08-06T11:02:09.010 回答