2016-02-11 52 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格式%的規格嗎?