使用numpy将数组写入标准输出
如何以一种符合习惯的方式将一个Numpy的二维数组输出到标准输出(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 )
(不过这样会出现语法错误)。
1 个回答
18
下面这段代码怎么样呢?
>>> 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, ...)
来实现。