我在for循环中生成非常大的矩阵(列表列表)。我想将每个矩阵放在一个文本文件中,以便以后访问。问题是python似乎对可以放在一行上的字符数量有限制。
一个看起来像这样的矩阵:
[[a,b,c,d,e,f],[g,h,i,j,k]]
看起来像
[[a,b,c,
d,e,f],
[g,h,i,
j,k]]
当然有非常大的矩阵,所以我想扩展它可以放在一行上的字符数(无限?)
这是我写入文件的代码:
state_file = open('filename','w')
for item2 in state_lst:
state_file.write("%s\n" % item2)
state_file.write("\n")
state_file.write("\n")
state_file.close()
所以它基本上将一个列表的元素(我有我的矩阵)写在一个文件中。
答案 0 :(得分:1)
Your problem is with the %s'%item2
formatting. That uses the default numpy
array fromatting, which splits the text into multiple lines. If you want more control over the output use np.savetxt
, or use what that code does.
Make a long array, and format with %s
- note the \n
:
In [1417]: item2=np.arange(30.)
In [1418]: '%s'%item2
Out[1418]: '[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.\n 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.]'
Make a format in the way that savetxt
does - one format field for each item in the array:
In [1419]: fmt=', '.join(['%5.1f']*item2.shape[0])
In [1421]: fmt%tuple(item2)
Out[1421]: ' 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0'
The result is one line without \n
. Note the use of tuple(item2)
. That's required by %
formatting. You can refine the fmt
to add []
or other delimiters.
There are ways of fiddling with the default numpy
print formatting, but savetxt
takes this direct approach.
答案 1 :(得分:0)
你说
"我想将每个
matrix
放在一个文本文件中,以便日后访问"
是的,您可以使用savetext
。如上所述 johnsharpe 。
但问题是,以后很难获得这些" matrix
"实际上即加载回像matrix
这样的数据形式。
这就是为什么我建议你改为使用pandas
Dataframe
,而且它也有save
方法,那么你就可以轻松取回你的数据了在此之前。