Bagaimana cara menampilkan output penuh di Jupyter, bukan hanya hasil terakhir?


115

Saya ingin Jupyter mencetak semua hasil interaktif tanpa harus mencetak, tidak hanya hasil terakhir. Bagaimana cara melakukannya?

Contoh:

a=3
a
a+1

Saya ingin menampilkan

3
4


21
Ini tidak terlalu sering digunakan, tetapi sebenarnya ada opsi konfigurasi yang harus dilakukan - setel InteractiveShell.ast_node_interactivityke 'all'dalam file konfigurasi kernel IPython .
Thomas K

Terima kasih Thomas, itulah yang saya cari :)
mbh86

Itu ada! ! !
vasili111

Jawaban:


179

Terima kasih kepada Thomas, inilah solusi yang saya cari:

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

2
Ini tip yang bagus. - Berapa nilai flag untuk dikembalikan ke baris keluaran terakhir saja?
Masker Reblochon

12
Nilai defaultnya adalah: 'last_expr'. Anda dapat menemukan banyak opsi lain di sini: ipython.readthedocs.org/en/stable/config/options/terminal.html
mbh86

8
Untuk referensi, opsi untuk itu adalah 'all', 'none', 'last' dan 'last_expr'. Perbedaan antara 'last' dan 'last_expr': jika sel Anda diakhiri dengan, katakanlah, loop yang berisi ekspresi, 'last' akan menampilkan hasil dari ekspresi tersebut di setiap iterasi loop. 'last_expr' (default) tidak akan menunjukkan bahwa: itu hanya akan menampilkan hasil ekspresi kosong di akhir sel.
Thomas K

1
Sialan ... fitur ini adalah pembunuh.
flow2k

(Ish) baru last_expr_or_assignluar biasa untuk melakukan demo! Tidak perlu lagi mengetik ulang item yang sama beberapa kali hanya untuk mencetaknya juga.
Henry Schreiner

33

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

1) Tempatkan kode ini di sel Jupyter:

from IPython.core.interactiveshell import InteractiveShell

InteractiveShell.ast_node_interactivity = "all"

2) Di Windows, langkah-langkah di bawah ini membuat perubahan menjadi permanen. Harus berfungsi untuk sistem operasi lain. Anda mungkin harus mengubah jalannya.

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

Buat file ipython_config.py di profile_defaults dengan kode berikut:

c = get_config()

c.InteractiveShell.ast_node_interactivity = "all"

0

Per Dasar Notebook

Seperti yang telah dijawab orang lain, meletakkan kode berikut di Jupyter Lab atau sel Notebook Jupyter akan berfungsi:

from IPython.core.interactiveshell import InteractiveShell

InteractiveShell.ast_node_interactivity = "all"

Perubahan Permanen

Namun, jika Anda ingin menjadikannya permanen dan menggunakan Jupyter Lab, Anda perlu membuat file konfigurasi notebook IPython. Jalankan perintah berikut untuk melakukannya ( JANGAN dijalankan jika Anda menggunakan Jupyter Notebook - detail selengkapnya di bawah):

ipython profile create

Jika Anda menggunakan Notebook Jupyter, file ini seharusnya sudah dibuat dan tidak perlu menjalankannya lagi. Nyatanya, menjalankan perintah ini dapat menimpa preferensi Anda saat ini.

Setelah Anda membuat file ini, untuk pengguna Jupyter Lab dan Notebook, tambahkan kode berikut ke file C:\Users\USERNAME\\.ipython\profile_default\ipython_config.py:

c.InteractiveShell.ast_node_interactivity = "all"

Saya menemukan bahwa tidak perlu c = get_config()di versi yang lebih baru dari Jupyter, tetapi jika ini tidak berhasil untuk Anda, tambahkan c = get_config()ke awal file.

Untuk opsi bendera lainnya selain "all", kunjungi tautan ini : https://ipython.readthedocs.io/en/stable/config/options/terminal.html#configtrait-InteractiveShell.ast_node_interactivity

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.