将一个Numpy 2D数组写入stdout的惯用方法是什么?例如我有一个数组
a = numpy.array([[2., 0., 0.], [0., 2., 0.], [0., 0., 4.]])
[[ 2. 0. 0.]
[ 0. 2. 0.]
[ 0. 0. 4.]]
我想输出:
2.0 0.0 0.0
0.0 2.0 0.0
0.0 0.0 4.0
我可以通过转换为嵌套列表,然后加入列表元素来完成此操作:
print( '\n'.join( [ ' '.join( [ str(e) for e in row ] ) for row in a.tolist() ] ) )
但想要像:
a.tofile( sys.stdout )
(除了这会产生语法错误)。
答案 0 :(得分:14)
以下代码怎么样?
>>> a = numpy.array([[2., 0., 0.], [0., 2., 0.], [0., 0., 4.]])
>>> numpy.savetxt(sys.stdout, a, fmt='%.4f')
1.0000 2.0000 3.0000
0.0000 2.0000 0.0000
0.0000 0.0000 4.0000
在Python 3+中,使用numpy.savetxt(sys.stdout.buffer, ...)
。