Skip to content Skip to sidebar Skip to footer

Print `numpy.ndarray` On A Single Line

While using scipy/numpy, I do get information that I store into a numpy.ndarray >>> a array([[ 0.15555605, 0.51031528, 0.84580176, 0.06722675], [ 0.60556045, 0

Solution 1:

In order to print a numpy.array into a single line, you can convert it to a list with its built-in function numpy.tolist()

Example:

import numpy as nparr= np.array(((1, 2, 3), (4, 5, 6), (7, 8, 9)))

Simple print of array:

print(arr)
[[1, 2, 3]
 [4, 5, 6]
 [7, 8, 9]]

In comparison with numpy.tolist():

print(array.tolist())
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

Solution 2:

NumPy provides a few ways to customize the printing, for example np.array2string.

For this answer I assume you have such an array:

>>>import numpy as np...arr = np.array([[ 0.15555605,  0.51031528,  0.84580176,  0.06722675],...                [ 0.60556045,  0.62721023, -0.48979983, -0.04152777],...                [-0.78044785,  0.58837543, -0.21146041, -0.13568023],...                [ 0.        ,  0.        ,  0.        ,  1.        ]])
  • If you want to display all items you need to make sure that you set threshold to np.inf.
  • In case you want to have , as separator, you can set separator to ','.

However it doesn't have an option to remove the line breaks, just

  • max_line_width which gives the number of characters printed in one line for the innermost dimension. So it works for 1D arrays when you set max_line_width=np.inf but it doesn't work out of the box for ND arrays.

Fortunately it returns a string that can be manipulated, for example by removing all linebreaks:

>>> np.array2string(arr, threshold=np.inf, max_line_width=np.inf, separator=',').replace('\n', '')
'[[ 0.15555605, 0.51031528, 0.84580176, 0.06722675], [ 0.60556045, 0.62721023,-0.48979983,-0.04152777], [-0.78044785, 0.58837543,-0.21146041,-0.13568023], [ 0.        , 0.        , 0.        , 1.        ]]'

Or use a regular expression to remove all whitespaces:

>>>import re>>>re.sub(r'\s+', '', np.array2string(arr, threshold=np.inf, max_line_width=np.inf, separator=','))
'[[0.15555605,0.51031528,0.84580176,0.06722675],[0.60556045,0.62721023,-0.48979983,-0.04152777],[-0.78044785,0.58837543,-0.21146041,-0.13568023],[0.,0.,0.,1.]]'

Agreed these aren't really "short" and they are also slower than converting to a list with .tolist() and then to a string but it's probably a good alternative especially if you want to customize the printed result without creating a (potentially huge) unnecessary list.

Post a Comment for "Print `numpy.ndarray` On A Single Line"