web-dev-qa-db-ja.com

numpyで最大出力幅を設定するにはどうすればよいですか?

Jupyterノートブックを使用しています。私はかなり広い画面を持っていますが、表示される出力(たとえば、numpy配列を出力するとき)は、画面が狭いかのようにフォーマットされています。

セルの幅を増やす方法を見つけました、

from IPython.core.display import HTML
HTML("<style>.container { width:95% !important; }</style>")

しかし、これは出力にではなく、入力のみに影響するようです(スクリーンショットを参照)。

short inputlonger input

numpy.set_printoptionslinewidthオプションを設定しようとしましたが、numpy.core.arrayprint._line_widthを設定しようとしましたが、何も...

編集:matplotlibを使用して、コマンド%matplotlib inlineでプロットの幅(マジックplt.rcParams['figure.figsize']=[X,Y]でノートブックにプロットする)を設定できます。 Xを増やして、出力セルを水平方向にいっぱいにプロットできることがわかりました。これは(私が思うに)元の問題がnumpyの問題であることを意味します。

20
Ziofil

これはもう1年経っていますが、おそらく答えは他の誰かを助けるでしょう。

Numpy-arraysの表示方法は、いくつかの事柄に依存します。このコードを使用すると、より多くのアイテムを表示し、画面の全幅を使用できます。

これがデフォルトです

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],
>>>    ..., 

次のコードを使用して、各配列の端(開始と終了)に表示される項目と線の幅を増やします。

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],
12
Frank Herfert

私は この答え を自分の作成に役立てました:

import numpy as np
np.set_printoptions(edgeitems=30, linewidth=100000, 
    formatter=dict(float=lambda x: "%.3g" % x))

不条理な線幅はedgeitemsだけを意味し、ウィンドウの幅によって改行/折り返しが発生するタイミングが決まります。

enter image description here

ウィンドウを少し縮小すると、次のようになります。そのため、edgeitemsまたはフォーマットを操作する必要がある場合があります。

enter image description here

ここにドキュメントがあります for set_printoptions、次のうち該当するもの:

  • edgeitems:各次元の最初と最後のサマリーの配列項目の数(デフォルトは3)。

  • linewidth:改行を挿入するための1行あたりの文字数(デフォルトは75)。

22
DharmaTurtle