it-swarm.com.de

Wie drucke ich ein numpy.array in einer Zeile?

Ich habe PyCharm und IDLE getestet. Beide geben die 7. Ziffer in einer zweiten Zeile aus.

Eingang:

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

Ausgabe:

[ 1.02090721  1.02763091  1.03899317  1.00630297  1.00127454  0.89916715
  1.04486896]

Wie kann ich sie in einer Zeile drucken?

5
lanselibai

Es gibt np.set_printoptions , mit dem die "Zeilenbreite" des gedruckten NumPy-Arrays geändert werden kann:

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

Es werden alle 1D-Arrays in einer Zeile gedruckt. Bei mehrdimensionalen Arrays funktioniert das nicht so leicht.


Ähnlich wie hier könnten Sie einen Kontextmanager verwenden, wenn Sie nur vorübergehend ändern möchten:

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)

Dann verwenden Sie es so (frische Interpreter-Sitzung vorausgesetzt):

>>> 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]
6
MSeifert

Wenn Sie eine angepasste Version von str(a) wünschen, lautet die Antwort array_str :

>>> print(a)
[ 1.02090721  1.02763091  1.03899317  1.00630297  1.00127454  0.89916715
  1.04486896]
>>> str(a)
'[1.02090721 1.02763091 1.03899317 1.00630297 1.00127454 0.89916715\n 1.04486896]'
>>> np.array_str(a, max_line_width=np.inf)
'[1.02090721 1.02763091 1.03899317 1.00630297 1.00127454 0.89916715 1.04486896]'
>>> print(np.array_str(a, max_line_width=np.inf)
[1.02090721 1.02763091 1.03899317 1.00630297 1.00127454 0.89916715 1.04486896]

Wenn Sie den Ausdruck von every array ändern möchten, nicht nur hier, siehe set_printoptions .

5
abarnert

Geben Sie beim Drucken in eine Liste um. 

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

Dies wird in einer einzelnen Zeile gedruckt.

0
zerocool