我想知道如何将这个问题答案(保罗)中创建的数组保存到文本文件中。
How do I print an aligned numpy array with (text) row and column labels?
详情如下:
a = np.random.rand(5,4)
x = np.array('col1 col2 col3 col4'.split())
y = np.array('row1 row2 row3 row4 row5'.split())
b = numpy.zeros((6,5),object)
b[1:,1:]=a
b[0,1:]=x
b[1:,0]=y
b[0,0]=''
printer = np.vectorize(lambda x:'{0:5}'.format(x,))
print printer(b).astype(object)
[[ col1 col2 col3 col4]
[row1 0.95 0.71 0.03 0.56]
[row2 0.56 0.46 0.35 0.90]
[row3 0.24 0.08 0.29 0.40]
[row4 0.90 0.44 0.69 0.48]
[row5 0.27 0.10 0.62 0.04]]
答案 0 :(得分:0)
你的方式取决于你打算如何访问它。由于您希望它具有人类可读性,因此简单的解决方案是将其打印到文件中。这确实使得从文件恢复更加困难。
f = open(Filename, 'w')
f.write(str(printer(b).astype(object)))
f.flush()
f.close()
答案 1 :(得分:0)
我真的很喜欢使用writelines的repr()和.rjust()功能。所以,假设我有一个矩阵'mat'(即一个ndarray),其中A.shape =(10,2),并且想要某些格式化和舍入,我可以通过使用以下内容得到一个体面的,调整后的输出:
mat = numpy.random.rand(10,10)
f = open('myFile','a')
m,n = mat.shape
for i in range(0,m):
for j in range(0,n):
f.writelines(repr(round(mat[i,j],4)).rjust(7))
f.writelines('\n')
f.close()