Search code examples
pythonarrayspython-3.xnumpyline

How to print a numpy.array in one line?


I tested PyCharm and IDLE, both of them print the 7th number to a second line.

Input:

import numpy as np
a=np.array([ 1.02090721,  1.02763091,  1.03899317,  1.00630297,  1.00127454, 0.89916715,  1.04486896])
print(a)

Output:

[ 1.02090721  1.02763091  1.03899317  1.00630297  1.00127454  0.89916715
  1.04486896]

How can I print them in one line?


Solution

  • There is np.set_printoptions which allows to modify the "line-width" of the printed NumPy array:

    >>> import numpy as np
    
    >>> np.set_printoptions(linewidth=np.inf)
    >>> a = np.array([ 1.02090721,  1.02763091,  1.03899317,  1.00630297,  1.00127454, 0.89916715,  1.04486896])
    >>> print(a)
    [1.02090721 1.02763091 1.03899317 1.00630297 1.00127454 0.89916715 1.04486896]
    

    It will print all 1D arrays in one line. It won't work that easily with multidimensional arrays.


    Similar to here you could use a contextmanager if you just want to temporarily change that:

    import numpy as np
    from contextlib import contextmanager
    
    @contextmanager
    def print_array_on_one_line():
        oldoptions = np.get_printoptions()
        np.set_printoptions(linewidth=np.inf)
        yield
        np.set_printoptions(**oldoptions)
    

    Then you use it like this (fresh interpreter session assumed):

    >>> import numpy as np
    >>> np.random.random(10)  # default
    [0.12854047 0.35702647 0.61189795 0.43945279 0.04606867 0.83215714
     0.4274313  0.6213961  0.29540808 0.13134124]
    
    >>> with print_array_on_one_line():  # in this block it will be in one line
    ...     print(np.random.random(10))
    [0.86671089 0.68990916 0.97760075 0.51284228 0.86199111 0.90252942 0.0689861  0.18049253 0.78477971 0.85592009]
    
    >>> np.random.random(10)  # reset
    [0.65625313 0.58415921 0.17207238 0.12483019 0.59113892 0.19527236
     0.20263972 0.30875768 0.50692189 0.02021453]