我目前正在编写一个python 3函数,它接受一个numpy数组并将整个数组打印到一个文本文件,但它首先将0添加到最后一行。例如,如果我给它np.eye(3),
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
这很奇怪,因为每行都在文本文件中缩进。无论如何还要保持这样做的不可能吗?
答案 0 :(得分: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格式%
规范吗?