為什麼要有jupyter notebook的存在呢?

本人萌新一隻

一直用的pycharm

所以完全不明白notebook存在的意義

為啥不用pycharm要用notebook呢?

notebook能做的pycharm也能做

但是pycharm能做的notebook卻不一定能做

所以為什麼不用pc要用notebook呢。。。

看了一下答案好像是notebook可以實時獲得反饋

我感覺用pc也可以啊,我一邊寫一邊run感覺也很方便啊。。。


回答過一個類似的問題,

python數據分析用哪個軟體??

www.zhihu.com圖標

另外,從交互層面上看,Notebook具備比PyCharm更強的交互能力,這使得Notebook實際上更像一個Web應用,應用中的代碼和可視化結果,實際上是這個應用的一部分。你不是在開發某個東西,而是在使用這個工具快速地展現自己的想法,類似於寫一本書或者一篇文章。

Jupyter Notebook還有個好處是易於傳播內容,因為它是Web服務,所以可以部署在雲端,讓希望看到應用成果的人輕鬆的訪問。

不過選擇開發工具這個事情其實也蠻感性的,可能題主還沒有遇到合適的場景,因此沒有體驗到Notebook的優勢。


notebook的意思是筆記本,pycharm是個IDE,側重點不一樣

notebook 不止寫 code,也可以寫markdown,可以寫latex,結合RISE可以做presentation,可以寫book。但notebook不適合寫production的代碼,不適合version control。

一般不會只用notebook或IDE,而是IDE和notebook結合使用


Notebook 的好處在於可以即時執行分段代碼片段即時反饋,非常靈活方便。

比如你要訓練一個機器學習的圖像分類模型,訓練需要運行較長時間,訓練完以後想看一下效果如何。這種場景就非常適合使用 notebook。因為訓練完以後要運行什麼代碼是不能事先預知的,要根據實際的反饋來決定。比如你一開始可能是漫無目標地隨便拿幾個圖片樣本看看模型的表現如何,然後你可能發現低清圖片的表現比較好但高清圖片的表現比較差,根據這個反饋,你決定拿一堆圖片先輸出它們的大小,然後再分別挑出最大的圖和最小的圖分別測試模型的表現。然後你可能決定修改一下模型的某個參數,再試一下。類似這種事先不知道要運行什麼代碼,看了結果反饋後才決定要運行什麼代碼,以及同一段代碼可能用不同參數多次運行試驗,這種情況特別適合用 notebook。如果用 IDE,每加一行代碼或每改一個參數都要整個流程全部重新走一遍,那受不了。你可能覺得 IDE 的命令提示行功能也可以一行一行的執行代碼啊?是的,但是還是不如 notebook 方便,因為命令提示行窗口一關,整個運行的過程都沒了。而 notebook 則保存你每一步執行的過程,一是方便你以後重複運行,二是之前某一步你想改個參數重跑一遍,用 notebook 也很容易跳轉到那一步去。

有些人也提到 Jupyter notebook 具有展示的功能,比如可以寫 Markdown 可以嵌入圖片把你的東西組織得更好。這當然也是一個好處,但大部分人需要給別人展示的時候不多,更多的是給自己展示,而 notebook 方便開發的功能是更主要的優勢。

實際使用中,建議將 notebook 和 IDE 相結合使用。比較模塊化、比較有邏輯的代碼,可以用 IDE 寫,比較有探索性、試驗性的代碼則用 notebook 來寫,這樣可以發揮二者的長處。


最關鍵的點樓上答主已經提到了,就是notebook可以分段執行代碼。

舉個栗子

我現在要調用一個深度學習模型來測試功能。而一個模型往往幾百M甚至幾個G,將模型全部載入到內存里需要耗費大量(數秒甚至數十秒)時間。

假設確定載入模型的代碼沒問題,現在想要debug調用模型預測數據的代碼。

如果用pycharm,我每次執行預測代碼都會花費一段時間重新調用一次模型。

而用jupyter notebook的話,我只需將模型載入和模型預測的代碼分段執行,先將模型載入到內存中,然後就不用管他了,debug時也不會再次載入模型。如此以來便節約了大量時間。

題主對於這個問題的疑惑可能是因為還沒有遇到過需要佔用大量時間的程序。初學者我覺得也用不著notebook~

其實notebook還有一個重要功能就是方便老師留作業(逃


已有答案說的對,notebook更像是一個演示和教學工具。

notebook這個形態其實發端於Matlab 4是5版本,九幾年啊,matlab notebook可以在word文檔中插入計算cell,寫matlab代碼計算並展示。再往前推就是這種前GUI後kernel計算的互動式計算形態就推到了88年的Mathematica,馬上Maple和Matlab都採用了這種交互界面。IPython Notebook-&>Jupyter Notebook也就學來了。

這種互動式計算界面確實很好啊,對於簡單寫幾行代碼就能看結果,非常非常方便有木有

Notebook最開始就是為了演示和教學(matlab也是為教學才發明的),因為這個演示教學本身就是一段知識一段知識的,每一段講解完,附個可交互修改的計算cell,學生馬上就可以運算並修改驗證下自己的想法。

你看用word版Matlab Notebook寫一份教材,裡面所有的例題都是活的,妙極了。現在Jupyter Notebook和Matlab Live Writer等直接在網頁上就可以達成這項功能,更是妙極了。


使用場景不一樣或者說利用Python的特性不一樣。別忘了Python是一個腳本語言,本質和shell是一樣的。回顧一下Jupyter的發展歷史,Ipython&>&>IPython notebook&>&>Jupyter notebook。IPython最早出來是準備替代shell做伺服器管理的,因此含有大量的magic函數。但是別忘了bash是腳本語言,stata和matlab也是。後來IPython主要用來做數據分析了,IPython notebook是IPython利用瀏覽器IDE化了,Jupyter notebook則加入多重語言支持。

如果不明白數據分析為啥用IPython,可以試試用pyCharm寫一段代碼,要求對隨便一隻股票做非參估計。畫圖,改模型,不是很方便。


存在即合理,你現在接觸的用pycharm都可以,不代表所以的都行

況且能用不代表好用,這就和糟糠和大米飯都能填飽肚子一樣,為什麼你會選擇後者而放棄前者呢???


聞道有先後,術業有專攻


是也乎 ╮(╯▽╰)╭

為了不安裝環境就能演示分享


jupyter 和 pycharm 各有側重,jupyter側重展示,pycharm側重工程項目。

但是!很多人用jupyter的原因只是因為沒用過pycharm或者不會用pycharm。


這是兩個玩意

寫代碼肯定得IDE之類的東西

但是,遇到別的需求,比如你的代碼還要給人看(寫論文),IDE不適合給別人看吧

我最近在寫論文

代碼在VS code裡面寫好,格式化,然後扔jupyter裡面跑,跑完輸出markdown,pandoc轉成docx(學校不認latex),體驗很nice

圖片能處理好,代碼片段也很好看

markdown部分的表格也能很好的處理(ipython輸出部分的不行)

公式沒試過,公式在word裡面寫的


obj=load(large-file)

do1

doplot1

#不好

do2

doplot2

#這個好

對於上述需求,你打算跑兩次?


一個是開發工具,一個是教學演示工具


推薦閱讀:

Win10下安裝Anaconda+CUDA+TensorFlow+PyTorch+PyCharm
[Pipeline] 在Anaconda下用Snakemake構建ChIP-seq流程(3)
[Pipeline] 在Anaconda下用Snakemake構建ChIP-seq流程(4)
只要導入tensorflow庫 python就停止工作(在jupyter中提示python kernel died, restarting )
最簡單的深度學習環境配置?

TAG:IPython | Anaconda | JupyterNotebook |