Print `numpy.ndarray` On A Single Line
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
tonp.inf
. - In case you want to have
,
as separator, you can setseparator
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 setmax_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"