使用numpy将数组写入stdout

bmo*_*gan 6 python arrays numpy stdout python-3.x

将Numpy 2D数组写入stdout的惯用方法是什么?比如我有一个阵列

a = numpy.array([[2., 0., 0.], [0., 2., 0.], [0., 0., 4.]])

[[ 2.  0.  0.]
 [ 0.  2.  0.]
 [ 0.  0.  4.]]
Run Code Online (Sandbox Code Playgroud)

我希望输出为:

2.0 0.0 0.0
0.0 2.0 0.0
0.0 0.0 4.0
Run Code Online (Sandbox Code Playgroud)

我可以通过转换为嵌套列表,然后加入列表元素来完成此操作:

print( '\n'.join( [ ' '.join( [ str(e) for e in row ] ) for row in a.tolist() ] ) )
Run Code Online (Sandbox Code Playgroud)

但是想要像:

a.tofile( sys.stdout )
Run Code Online (Sandbox Code Playgroud)

(除了这给出了语法错误).

sei*_*chi 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
Run Code Online (Sandbox Code Playgroud)

在Python 3+中,使用numpy.savetxt(sys.stdout.buffer, ...).