我需要从Python中将一系列矩阵写入纯文本文件。我的所有矩阵都是浮点格式,因此简单的file.write()和file.writelines()方法无法生效。
是否有一种转换方法可以让我不必遍历所有列表(在我的情况下,矩阵是一个列表的列表),并转换每个值?
我想我应该澄清一下,它不必看起来像矩阵,只需要以易于解析的列表形式呈现相关值,因为我将在稍后进行读取。所有内容放在一行上可能会更容易!
m = [[1.1, 2.1, 3.1], [4.1, 5.1, 6.1], [7.1, 8.1, 9.1]]
file.write(str(m))
如果您想更控制每个值的格式:
def format(value):
return "%.3f" % value
formatted = [[format(v) for v in r] for r in m]
file.write(str(formatted))
以下方法适用于我:
with open(fname, 'w') as f:
f.writelines(','.join(str(j) for j in i) + '\n' for i in matrix)
为什么不使用pickle呢?
import cPickle as pickle
pckl_file = file("test.pckl", "w")
pickle.dump([1,2,3], pckl_file)
pckl_file.close()
对于矩阵中的每一行:
file.write(" ".join(map(str,row))+"\n")
这对我来说是有效的...并以矩阵格式编写输出。
import pickle
# write object to file
a = ['hello', 'world']
pickle.dump(a, open('delme.txt', 'wb'))
# read object from file
b = pickle.load(open('delme.txt', 'rb'))
print b # ['hello', 'world']
vi delme.txt
1 (lp0
2 S'hello'
3 p1
4 aS'world'
5 p2
6 a.