Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using numpy to write an array to stdout

What is an idiomatic way to write a Numpy 2D Array to stdout? e.g. I have an array

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

[[ 2.  0.  0.]
 [ 0.  2.  0.]
 [ 0.  0.  4.]]

That I would like outputted as:

2.0 0.0 0.0
0.0 2.0 0.0
0.0 0.0 4.0

I can do this by converting to a nested list, and then joining the list elements:

print( '\n'.join( [ ' '.join( [ str(e) for e in row ] ) for row in a.tolist() ] ) )

but would like something like:

a.tofile( sys.stdout )

(except this gives a syntax error).

like image 786
bmorgan Avatar asked Mar 19 '14 18:03

bmorgan


1 Answers

How about the following code?

>>> 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

In Python 3+, use numpy.savetxt(sys.stdout.buffer, ...).

like image 150
seikichi Avatar answered Oct 14 '22 06:10

seikichi