2016-02-11 72 views
0

我目前正在编写一个python 3函数,它接受一个numpy数组并将整个数组打印到一个文本文件,但它首先在最后一行添加0。例如,如果我给它np.eye(3),Numpy保存文本错误

1 0 0 
0 0 1 
0 0 1 

应该写,

1 0 0 
0 0 1 
0 0 1 0 

到一个文本文件中。虽然下面的代码,

def addTo(array,textFile): 
    file=open(textFile,'ab') 
    (numRows,numColumns)=array.shape 
    main=array[0:numRows-1,:] 
    endRow=array[numRows-1,:] 
    newEndRow=np.append(endRow, [0]) 
    np.savetxt(file,main, fmt='%10.5f', newline=os.linesep) 
    np.savetxt(file,newEndRow[np.newaxis], fmt='%10.5f', newline=os.linesep) 
    file.close() 

addTo(np.eye(3),'test1.txt') 

保持返回

1.00000 0.00000 0.00000 
    0.00000 1.00000 0.00000 
    0.00000 0.00000 1.00000 0.00000 

,因为每一行的文本文件缩进很奇怪。无论如何,要做到这一点numpy?

+0

'np.eye(3)'返回单位矩阵 - 沿对角线(https://en.wikipedia.org/wiki/Identity_matrix)是1。在这种情况下,它产生的输出是正确的。 –

回答

0

这是什么让您烦恼?您的格式指定一个长度为10个字符的字段,其中包含5个小数。这就是你会得到什么:

In [357]: fmt='%10.5f' 
In [358]: fmt%1 
Out[358]: ' 1.00000' 
In [359]: fmt%0 
Out[359]: ' 0.00000' 

要获得'1 0 0'你需要给它一个不同fmt,像%d。你熟悉Python格式%的规格吗?