How to set max output width in numpy?
Question:
I am using a Jupyter notebook. I have a pretty wide screen, but the displayed output (say, when I print a numpy
array) is formatted as if the screen was narrow.
I found a way of increasing the width of the cells, with
from IPython.core.display import HTML
HTML("<style>.container { width:95% !important; }</style>")
but this seems to influence the input only, not the output (see screenshots):
I’ve tried setting the linewidth
option in numpy.set_printoptions
, I’ve tried setting numpy.core.arrayprint._line_width
, nothing…
EDIT: Using matplotlib I can set the width of plots (that I plot in the notebook with the magic %matplotlib inline
) with the command plt.rcParams['figure.figsize']=[X,Y]
. It turns out that I can increase X
to have plots fill the output cell horizontally all the way. This means (I think) that the original problem it’s a numpy
thing.
Answers:
This is a year old now but maybe the answer will help someone else.
The way numpy-arrays are displayed depends on a number of things.
With this code, you can show more items and use the full width of your screen:
This is the default
import numpy as np
np.set_printoptions(edgeitems=3)
np.core.arrayprint._line_width = 80
>>> array([[[0, 0, 0, ..., 0, 0, 0],
>>> [0, 0, 0, ..., 0, 0, 0],
>>> [0, 0, 0, ..., 0, 0, 0],
>>> ...,
With the following code you increase the items shown at the edge of each array (start and end) as well as the line width:
import numpy as np
np.set_printoptions(edgeitems=10)
np.core.arrayprint._line_width = 180
>>> array([[[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ..., 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
>>> [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ..., 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
>>> [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ..., 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
I found this answer helpful in creating my own:
import numpy as np
np.set_printoptions(edgeitems=30, linewidth=100000,
formatter=dict(float=lambda x: "%.3g" % x))
The absurd linewidth means only edgeitems
and the window’s width will determine when newlines/wrapping occurs.
If I shrink the window a bit, it looks like this, so you may still need to play with the edgeitems
or formatting:
Here are the docs for set_printoptions
, of which the following are relevant:
-
edgeitems
: Number of array items in summary at beginning and end of each dimension (default 3).
-
linewidth
: The number of characters per line for the purpose of inserting line breaks (default 75).
I am using a Jupyter notebook. I have a pretty wide screen, but the displayed output (say, when I print a numpy
array) is formatted as if the screen was narrow.
I found a way of increasing the width of the cells, with
from IPython.core.display import HTML
HTML("<style>.container { width:95% !important; }</style>")
but this seems to influence the input only, not the output (see screenshots):
I’ve tried setting the linewidth
option in numpy.set_printoptions
, I’ve tried setting numpy.core.arrayprint._line_width
, nothing…
EDIT: Using matplotlib I can set the width of plots (that I plot in the notebook with the magic %matplotlib inline
) with the command plt.rcParams['figure.figsize']=[X,Y]
. It turns out that I can increase X
to have plots fill the output cell horizontally all the way. This means (I think) that the original problem it’s a numpy
thing.
This is a year old now but maybe the answer will help someone else.
The way numpy-arrays are displayed depends on a number of things.
With this code, you can show more items and use the full width of your screen:
This is the default
import numpy as np
np.set_printoptions(edgeitems=3)
np.core.arrayprint._line_width = 80
>>> array([[[0, 0, 0, ..., 0, 0, 0],
>>> [0, 0, 0, ..., 0, 0, 0],
>>> [0, 0, 0, ..., 0, 0, 0],
>>> ...,
With the following code you increase the items shown at the edge of each array (start and end) as well as the line width:
import numpy as np
np.set_printoptions(edgeitems=10)
np.core.arrayprint._line_width = 180
>>> array([[[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ..., 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
>>> [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ..., 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
>>> [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ..., 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
I found this answer helpful in creating my own:
import numpy as np
np.set_printoptions(edgeitems=30, linewidth=100000,
formatter=dict(float=lambda x: "%.3g" % x))
The absurd linewidth means only edgeitems
and the window’s width will determine when newlines/wrapping occurs.
If I shrink the window a bit, it looks like this, so you may still need to play with the edgeitems
or formatting:
Here are the docs for set_printoptions
, of which the following are relevant:
-
edgeitems
: Number of array items in summary at beginning and end of each dimension (default 3). -
linewidth
: The number of characters per line for the purpose of inserting line breaks (default 75).