Jak wyświetlić pełną wydajność w Jupyter, a nie tylko ostatni wynik?


115

Chcę, aby Jupyter wydrukował wszystkie interaktywne dane wyjściowe bez uciekania się do drukowania, a nie tylko ostatni wynik. Jak to zrobić?

Przykład:

a=3
a
a+1

Chciałbym wyświetlić

3
4


21
To nie jest bardzo często używane, ale w rzeczywistości nie jest to opcja config, który powinien to zrobić - zestaw InteractiveShell.ast_node_interactivitydo 'all'w na ipython Kernel pliku konfiguracyjnym .
Thomas K

Dziękuję Thomas, właśnie tego szukałem :)
mbh86

Istnieje ! ! !
vasili111

Odpowiedzi:


179

Dzięki Thomasowi oto rozwiązanie, którego szukałem:

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"

2
To świetna wskazówka. - Jaka jest wartość flagi, aby powrócić tylko do ostatniego wiersza wyjścia?
Reblochon Masque

12
Wartość domyślna to: „last_expr”. Możesz znaleźć wiele innych opcji tutaj: ipython.readthedocs.org/en/stable/config/options/terminal.html
mbh86

8
Dla porównania, dostępne opcje to „all”, „none”, „last” i „last_expr”. Różnica między „last” i „last_expr”: jeśli twoja komórka kończy się, powiedzmy, pętlą zawierającą wyrażenie, „last” pokaże wyniki tego wyrażenia w każdej iteracji pętli. „last_expr” (domyślnie) nie pokaże tego: wyświetli tylko wynik pustego wyrażenia na końcu komórki.
Thomas K

1
Holy moly ... ta funkcja jest zabójcza.
flow2k

Nowy (ish) last_expr_or_assignjest niesamowity do robienia dem! Koniec z wielokrotnym przepisywaniem tego samego elementu tylko po to, aby go również wydrukować.
Henry Schreiner

33

https://www.dataquest.io/blog/jupyter-notebook-tips-tricks-shortcuts/

1) Umieść ten kod w komórce Jupyter:

from IPython.core.interactiveshell import InteractiveShell

InteractiveShell.ast_node_interactivity = "all"

2) W systemie Windows poniższe kroki sprawiają, że zmiana jest trwała. Powinien działać w innych systemach operacyjnych. Być może będziesz musiał zmienić ścieżkę.

C:\Users\your_profile\\.ipython\profile_default

Utwórz plik ipython_config.py w profile_defaults z następującym kodem:

c = get_config()

c.InteractiveShell.ast_node_interactivity = "all"

0

Podstawa notebooka

Jak odpowiedzieli inni, umieszczenie następującego kodu w komórce Jupyter Lab lub Jupyter Notebook będzie działać:

from IPython.core.interactiveshell import InteractiveShell

InteractiveShell.ast_node_interactivity = "all"

Stała zmiana

Jeśli jednak chcesz, aby to było trwałe i korzystać z Jupyter Lab, musisz utworzyć plik konfiguracyjny notatnika IPython. Aby to zrobić, uruchom następujące polecenie ( NIE uruchamiaj, jeśli używasz Jupyter Notebook - więcej informacji poniżej):

ipython profile create

Jeśli używasz Jupyter Notebook, ten plik powinien już zostać utworzony i nie będzie potrzeby ponownego uruchamiania go. W rzeczywistości uruchomienie tego polecenia może nadpisać bieżące preferencje.

Po utworzeniu tego pliku, zarówno dla użytkowników Jupyter Lab, jak i Notebook, dodaj następujący kod do pliku C:\Users\USERNAME\\.ipython\profile_default\ipython_config.py:

c.InteractiveShell.ast_node_interactivity = "all"

Okazało się, że nie ma takiej potrzeby c = get_config()w nowszych wersjach Jupytera, ale jeśli to nie działa, dodaj c = get_config()na początek pliku.

Aby uzyskać więcej opcji flag innych niż "all", odwiedź ten link: https://ipython.readthedocs.io/en/stable/config/options/terminal.html#configtrait-InteractiveShell.ast_node_interactivity

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.