使用numpy将数组写入标准输出

8 投票
1 回答
4003 浏览
提问于 2025-04-17 23:01

如何以一种符合习惯的方式将一个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, ...) 来实现。

撰写回答