Jak wydrukować pełną tablicę NumPy?
Kiedy drukuje tablicę numpy, dostaję obciętą reprezentację, ale chcę mieć pełną tablicę.
Czy jest jakiś sposób, aby to zrobić?Przykłady:
>>> numpy.arange(10000)
array([ 0, 1, 2, ..., 9997, 9998, 9999])
>>> numpy.arange(10000).reshape(250,40)
array([[ 0, 1, 2, ..., 37, 38, 39],
[ 40, 41, 42, ..., 77, 78, 79],
[ 80, 81, 82, ..., 117, 118, 119],
...,
[9880, 9881, 9882, ..., 9917, 9918, 9919],
[9920, 9921, 9922, ..., 9957, 9958, 9959],
[9960, 9961, 9962, ..., 9997, 9998, 9999]])
13 answers
Aby wyjaśnić odpowiedź Reeda
import numpy
numpy.set_printoptions(threshold=numpy.nan)
Zwróć uwagę, że powyższa odpowiedź działa z inicjałem from numpy import *
, co nie jest wskazane.
To również działa dla mnie:
numpy.set_printoptions(threshold='nan')
Pełna dokumentacja znajduje się w http://docs.scipy.org/doc/numpy/reference/generated/numpy.set_printoptions.html .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-19 20:59:39
import numpy as np
np.set_printoptions(threshold=np.inf)
Sugeruję użycie np.inf
zamiast np.nan
, co jest sugerowane przez innych. Oba działają dla Twojego celu, ale ustawiając próg na "nieskończoność", każdy czytający Twój kod jest oczywisty, co masz na myśli. Posiadanie progu "nie liczby" wydaje mi się trochę niejasne.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-24 14:01:51
Poprzednie odpowiedzi są poprawne, ale jako słabszą alternatywę można przekształcić w listę:
>>> numpy.arange(100).reshape(25,4).tolist()
[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15], [16, 17, 18, 19], [20, 21,
22, 23], [24, 25, 26, 27], [28, 29, 30, 31], [32, 33, 34, 35], [36, 37, 38, 39], [40, 41,
42, 43], [44, 45, 46, 47], [48, 49, 50, 51], [52, 53, 54, 55], [56, 57, 58, 59], [60, 61,
62, 63], [64, 65, 66, 67], [68, 69, 70, 71], [72, 73, 74, 75], [76, 77, 78, 79], [80, 81,
82, 83], [84, 85, 86, 87], [88, 89, 90, 91], [92, 93, 94, 95], [96, 97, 98, 99]]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-02 23:46:40
To brzmi jakbyś używał numpy.
W takim przypadku możesz dodać:
import numpy as np
np.set_printoptions(threshold='nan')
To wyłączy drukowanie narożników. Aby uzyskać więcej informacji, zobacz ten NumPy Tutorial .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-20 16:26:16
Oto jednorazowy sposób, aby to zrobić, co jest przydatne, jeśli nie chcesz zmieniać ustawień domyślnych:
def fullprint(*args, **kwargs):
from pprint import pprint
import numpy
opt = numpy.get_printoptions()
numpy.set_printoptions(threshold='nan')
pprint(*args, **kwargs)
numpy.set_printoptions(**opt)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-14 18:19:46
Używanie menedżera kontekstu jako Paul Price sugggested
import numpy as np
class fullprint:
'context manager for printing full numpy arrays'
def __init__(self, **kwargs):
if 'threshold' not in kwargs:
kwargs['threshold'] = np.nan
self.opt = kwargs
def __enter__(self):
self._opt = np.get_printoptions()
np.set_printoptions(**self.opt)
def __exit__(self, type, value, traceback):
np.set_printoptions(**self._opt)
a = np.arange(1001)
with fullprint():
print(a)
print(a)
with fullprint(threshold=None, edgeitems=10):
print(a)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:44
numpy.savetxt
numpy.savetxt(sys.stdout, numpy.arange(10000))
Lub jeśli potrzebujesz ciągu:
import StringIO
sio = StringIO.StringIO()
numpy.savetxt(sio, numpy.arange(10000))
s = sio.getvalue()
print s
Domyślny format wyjściowy to:
0.000000000000000000e+00
1.000000000000000000e+00
2.000000000000000000e+00
3.000000000000000000e+00
...
I może być skonfigurowany z kolejnymi argumentami.
Testowane na Pythonie 2.7.12, numpy 1.11.1.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-07 16:59:51
Jest to niewielka modyfikacja (usunięto opcję przekazywania dodatkowych argumentów do set_printoptions)
z neok s answer.
Pokazuje, jak można używać contextlib.contextmanager
aby łatwo utworzyć taki menedżer kontekstowy z mniejszą liczbą wierszy kodu:
import numpy as np
from contextlib import contextmanager
@contextmanager
def show_complete_array():
oldoptions = np.get_printoptions()
np.set_printoptions(threshold=np.inf)
try:
yield
finally:
np.set_printoptions(**oldoptions)
W Twoim kodzie może być użyty tak:
a = np.arange(1001)
print(a) # shows the truncated array
with show_complete_array():
print(a) # shows the complete array
print(a) # shows the truncated array (again)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-03 06:16:04
Dla tych, którzy lubią importować jako np:
import numpy as np
np.set_printoptions(threshold=np.nan)
Będzie również działać
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-06 01:49:26
Jeśli tablica jest zbyt duża, aby można ją było wydrukować, NumPy automatycznie pomija centralną część tablicy i drukuje tylko narożniki:
Aby wyłączyć to zachowanie i zmusić NumPy do wydrukowania całej tablicy, możesz zmienić opcje drukowania za pomocą set_printoptions
.
>>> np.set_printoptions(threshold='nan')
lub
>>> np.set_printoptions(edgeitems=3,infstr='inf',
... linewidth=75, nanstr='nan', precision=8,
... suppress=False, threshold=1000, formatter=None)
Możesz również odwołać się do dokumentacji numpy numpy documentation for "or part" for more help.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-19 20:57:48
Załóżmy, że masz tablicę numpy
arr = numpy.arange(10000).reshape(250,40)
Jeśli chcesz wydrukować pełną tablicę w Jednorazowy sposób (bez przełączania np.set_printoptions), ale chcesz czegoś prostszego (mniej kodu) niż menedżer kontekstu, po prostu wykonaj
for row in arr:
print row
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-02 18:33:16
Możesz użyć funkcji array2string
- docs .
a = numpy.arange(10000).reshape(250,40)
print(numpy.array2string(a, threshold=numpy.nan, max_line_width=numpy.nan))
# [Big output]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-03 13:01:41
Uzupełniając tę odpowiedź od maksymalnej liczby kolumn (ustalonej za pomocą numpy.set_printoptions(threshold=numpy.nan)
), Istnieje również limit znaków, które mają być wyświetlane. W niektórych środowiskach, takich jak wywołanie Pythona z bash (zamiast sesji interaktywnej), można to naprawić, ustawiając parametr linewidth
w następujący sposób.
import numpy as np
np.set_printoptions(linewidth=2000) # default = 75
Mat = np.arange(20000,20150).reshape(2,75) # 150 elements (75 columns)
print(Mat)
W takim przypadku okno powinno ograniczyć liczbę znaków, aby zawinąć linię.
Dla tych, którzy używają wysublimowanego tekstu i chcą zobaczyć efekty wewnątrz w oknie wyjściowym należy dodać opcję build "word_wrap": false
do pliku SUBLIME-build [source ].
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-28 06:34:48