我想使用numpy.savetxt
编写一个numpy数组,可以选择写入stdout,也可以作为文件的一部分(通过重定向stdout)。例如(在Python3中)
import numpy as np
import sys
def output( a ):
print( 'before np.savetxt' )
np.savetxt( sys.stdout.buffer, a )
print( 'after np.savetxt' )
a = np.array( [ ( 1, 2, 3 ), ( 4, 5, 6 ) ] )
output( a )
with open( 'test', 'w' ) as file_out:
sys.stdout = file_out
output( a )
这写(到stdout):
before np.savetxt
1.000000000000000000e+00 2.000000000000000000e+00 3.000000000000000000e+00
4.000000000000000000e+00 5.000000000000000000e+00 6.000000000000000000e+00
after np.savetxt
但是'test'文件包含这些无序的条目:
> cat test
1.000000000000000000e+00 2.000000000000000000e+00 3.000000000000000000e+00
4.000000000000000000e+00 5.000000000000000000e+00 6.000000000000000000e+00
before np.savetxt
after np.savetxt
是否可以按顺序排列这些输出,还是应该使用不同的方法将numpy.savetxt
与其他命令组合以写入同一文件?
答案 0 :(得分:2)
您可以在output()
函数内部仅使用savetxt
命令,并传递header
和footer
个参数:
def output( a ):
header = 'before np.savetxt'
footer = 'after np.savetxt'
np.savetxt(sys.stdout.buffer, a, header=header, footer=footer)
@DavidParks提醒,对于Python 2.7,它应该是sys.stdout
,对于Python 3.x,它应该是sys.stdout.buffer
。