【學習筆記】第三章 python3核心技術與實踐--Jupyter Notebook

可能你已經知道,Python 在 14 年后的“崛起”,得益于機器學習和數學統計應用的興起。那為什么 Python 如此適合數學統計和機器學習呢?作為“老司機”的我可以肯定地告訴你,Jupyter Notebook (https://jupyter.org/)功不可沒。

?

毫不夸張地說,根據我對 Facebook 等硅谷一線大廠的了解,一個 Python 工程師如果現在還不會使用 Jupyter Notebook 的話,可能就真的太落伍了。

?

磨刀不誤砍柴工,高效的工具讓我們的編程事半功倍。這一節課,我就來帶你學習一下 Jupyter Notebook,為后面的 Python 學習打下必備基礎。

?

什么是 Jupyter Notebook?

?

說了這么多,到底什么是 Jupyter Notebook?按照 Jupyter 創始人 Fernando Pérez 的說法,他最初的夢想是做一個綜合 Ju (Julia)、Py (Python)和 R 三種科學運算語言的計算工具平臺,所以將其命名為 Ju-Py-te-R。發展到現在,Jupyter 已經成為一個幾乎支持所有語言,能夠把軟件代碼、計算輸出、解釋文檔、多媒體資源整合在一起的多功能科學運算平臺。

?

英文里說一圖勝千言(A picture is worth a thousand words)。看下面這個圖片,你就明白什么是 Jupyter Notebook 了。

你在一個框框中直接輸入代碼,運行,它立馬就在下面給你輸出。怎么樣,是不是很酷?你可能會納悶兒,這樣一個看起來“華而不實”的玩意兒,真的就成了 Python 社區的顛覆者嗎?說實話放在幾年前我也是不信的。所以 Jupyter Notebook 的影響究竟有多大呢?

?

Jupyter Notebook 的影響力

?

我們衡量一個技術的影響力,或者說要用自己的技術去影響世界時,必定繞不開這個技術對教育界的影響力。

?

就拿微軟的 Word 文本處理系統來說吧。從純技術角度來講,Word 的單機設計理念早已落后時代 20 年。但以 Google Doc 為代表的在線文檔系統,卻并沒有像想象中那樣,實現對 Word 的降維打擊。

?

直觀的原因是用戶習慣,使用 Word 修改文檔,那就來回發幾十遍唄,用著也還可以。但更深刻來想,之所以養成這樣的用戶習慣,是因為我們的教育根源。教育系統從娃娃抓起,用小學中學大學十幾年的時間,訓練了用戶 Word 的使用習慣。到工作中,老員工又會帶著新員工繼續使用 Word,如此行程技術影響力生生不息的正向反饋。

?

回到我們今天的主題,我們來看 Jupyter Notebook。從 2017 年開始,已有大量的北美頂尖計算機課程,開始完全使用 Jupyter Notebook 作為工具。比如李飛飛的 CS231N《計算機視覺與神經網絡》課程,在 16 年時作業還是命令行 Python 的形式,但是 17 年的作業就全部在 Jupyter Notebook 上完成了。再如 UC Berkeley 的《數據科學基礎》課程,從 17 年起,所有作業也全部用 Jupyter Notebook 完成。

?

而 Jupyter Notebook 在工業界的影響力更甚。在 Facebook,雖然大規模的后臺開發仍然借助于功能齊全的 IDE,但是幾乎所有的中小型程序,比如內部的一些線下分析軟件,機器學習模塊的訓練都是借助于 Jupyter Notebook 完成的。據我了解,在別的硅谷一線大廠,例如 Google 的 AI Research 部門 Google Brain,也是清一色地全部使用 Jupyter Notebook,雖然用的是他們自己的改進定制版,叫 Google Colab。

?

看到這里,相信你已經認可了 Jupter Notebook 現如今的江湖地位。不過,說到技術的選擇,有些人會說,這個技術流行,我們應該用;有些人認為,阿里已經在用這個技術了,這就是未來,我們也要用等等。不得不說,這些都是片面的認知。不管是阿里還是 Facebook 用的技術,其實不一定適用你的應用場景。

?

我經常會鼓勵技術同行,對于技術選擇要有獨立的思考,不要人云亦云。最起碼你要去思考,Facebook 為什么選擇這個技術?這個技術解決了哪些問題?Facebook 為什么不選擇別的技術?有哪些局限?單從選擇結果而言,Facebook 選擇的技術很可能是因為它有幾百個產品線,幾萬個工程師。而同樣的技術,在一個十人的團隊里,反而成了拖累。

?

在這里,我不想忽悠你任何技術,我想教會你的是辯證分析技術的思考方法。接下來,我們就來看看,Jupyter 究竟解決了哪些別人沒有解決的問題。

?

Jupyter 的優點

?

1、整合所有的資源

?

在真正的軟件開發中,上下文切換占用了大量的時間。什么意思呢?舉個例子你就很好理解了,比如你需要切換窗口去看一些文檔,再切換窗口去用另一個工具畫圖等等。這些都是影響生產效率的因素。

?

正如我前面提到的,Jupyter 通過把所有和軟件編寫有關的資源全部放在一個地方,解決了這個問題。當你打開一個 Jupyter Notebook 時,就已經可以看到相應的文檔、圖表、視頻和相應的代碼。這樣,你就不需要切換窗口去找資料,只要看一個文件,就可以獲得項目的所有信息。

?

2、交互性編程體驗

?

在機器學習和數學統計領域,Python 編程的實驗性特別強,經常出現的情況是,一小塊代碼需要重寫 100 遍,比如為了嘗試 100 種不同的方法,但別的代碼都不想動。這一點和傳統的 Python 開發有很大不同。如果是在傳統的 Python 開發流程中,每一次實驗都要把所有代碼重新跑一遍,會花費開發者很多時間。特別是在像 Facebook 這樣千萬行級別的代碼庫里,即使整個公司的底層架構已經足夠優化,真要重新跑一遍,也需要幾分鐘的時間。

?

而 Jupyter Notebook 引進了 Cell 的概念,每次實驗可以只跑一小個 Cell 里的代碼;并且,所見即所得,在代碼下面立刻就可以看到結果。這樣強的互動性,讓 Python 研究員可以專注于問題本身,不被繁雜的工具鏈所累,不用在命令行直接切換,所有科研工作都能在 Jupyter 上完成。

?

3、零成本重現結果

?

同樣在機器學習和數學統計領域,Python 的使用是非常短平快的。常見的場景是,我在論文里看到別人的方法效果很好,可是當我去重現時,卻發現需要 pip 重新安裝一堆依賴軟件。這些準備工作可能會消耗你 80% 的時間,卻并不是真正的生產力。

?

Jupyter Notebook 如何解決這個問題呢?

?

其實最初的 Jupyter Notebook 也是挺麻煩的,需要你先在本機上安裝 IPython 引擎及其各種依賴軟件。不過現在的技術趨勢,則是徹底云端化了,例如 Jupyter 官方的 Binder 平臺(介紹文檔:https://mybinder.readthedocs.io/en/latest/index.html)和 Google 提供的 Google Colab 環境(介紹:https://colab.research.google.com/notebooks/welcome.ipynb)。它們讓 Jupyter Notebook 變得和石墨文檔、Google Doc 在線文檔一樣,在瀏覽器點開鏈接就能運行。

?

所以,現在當你用 Binder 打開一份 GitHub 上的 Jupyter Notebook 時,你不需要安裝任何軟件,直接在瀏覽器打開一份代碼,就能在云端運行。

?

4、Jupyter Notebook 初體驗

?

學習技術的最好方法就是用技術。不過,在今天的篇幅里,我不可能帶你完全學會 Jupyter Notebook 的所有技巧。我想先帶你直接感受一下,使用 Jupyter Notebook 的工作體驗。

?

比如這樣一個GitHub 文件。在Binder中,你只要輸入其對應的 GitHub Repository 的名字或者 URL,就能在云端打開整個 Repository,選擇你需要的notebook,你就能看到下圖這個界面。

每一個 Jupyter 的運行單元都包含了 In、Out 的 Cell。如圖所示,你可以使用 Run 按鈕,運行單獨的一個 Cell。當然,你也可以在此基礎上加以修改,或者新建一個 notebook,寫成自己想要的程序。趕緊打開鏈接試一試吧!

?

另外,我還推薦下面這些 Jupyter Notebook,作為你實踐的第一站。

?

第一個是 Jupyter 官方:https://mybinder.org/v2/gh/binder-examples/matplotlib-versions/mpl-v2.0/?filepath=matplotlib_versions_demo.ipynb

第二個是 Google Research 提供的 Colab 環境,尤其適合機器學習的實踐應用:https://colab.research.google.com/notebooks/basic_features_overview.ipynb

如果你想在本地或者遠程的機器上安裝 Jupyter Notebook,可以參考下面的兩個文檔。

安裝:https://jupyter.org/install.html

運行:https://jupyter.readthedocs.io/en/latest/running.html#running

總結

?

這節課,介紹了 Jupyter Notebook,并告訴你它為什么日趨成為 Python 社區的必學技術。這主要是因為它的三大特點:整合所有的資源、交互性編程體驗和零成本重現結果。但還是那句話,學習技術必須動手實操。這節課后,希望你能自己動手試一試 Jupyter Notebook,后面我們的一些課程代碼,我也會用 Jupyter Notebook 的形式分享給你。

?

?

?

?

轉載于:https://www.cnblogs.com/tianyu2018/p/10869167.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/279527.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/279527.shtml
英文地址,請注明出處:http://en.pswp.cn/news/279527.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

二進制安位處理_處理器與安??全性之間的聯系是什么?

二進制安位處理Newer processors are able to contribute to the security of your system, but what exactly do they do to help? Today’s Super User Q&A post looks at the link between processors and system security. 較新的處理器能夠為您的系統安全做出貢獻&am…

李開復現身說法成功的十個啟發

http://blog.sina.com.cn/kaifulee自信不失謙虛,謙虛不失自信天賦就是興趣 興趣就是天賦思考比傳道重要 觀點比解惑重要我不同意你 但我支持你挫折不是懲罰 而是學習的機會創新不重要 有用的創新才重要完美的工作 成長興趣 影響力用勇氣改變可以改變的事情做最好的領…

關于width: 100%的一些看法

一.position對width 設置為百分比的影響<html><head><style type"text/css">img {width: 50%}body {margin: 8px;}</style> </head><body><div style" min-height: 10px; background: red; "><div><im…

Haproxy+多臺MySQL從服務器(Slave) 實現負載均衡

本系統采用MySQL一主多從模式設計&#xff0c;即1臺 MySQL“主”服務器(Master)多臺“從”服務器(Slave)&#xff0c;“從”服務器之間通過Haproxy進行負載均衡&#xff0c;對外只提供一個訪問IP&#xff0c;當程序需要訪問多臺"從"服務器時&#xff0c;只需要訪問Ha…

愛普生第三方相機_值得購買第三方相機鏡頭嗎?

愛普生第三方相機When people buy a Canon or Nikon camera, they often assume that they can only buy Canon or Nikon lenses. But that isn’t true. While Nikon lenses won’t work on your Canon camera, there are third-party lens manufacturers—such as Sigma, Tam…

[BZOJ4182]Shopping

description 權限題。 樹上\(n\)個節點每個節點都有一種物品&#xff0c;每種物品有其價值&#xff0c;價格&#xff0c;數量&#xff0c;只能買一個連通塊中的物品&#xff0c;求\(m\)元能買到物品價值的最大值。 data range \[ n\le 500,m\le 4000,T\le 5,c_i\le m\] solutio…

如何用 Flutter 實現混合開發?閑魚公開源代碼實例

2019獨角獸企業重金招聘Python工程師標準>>> 具有一定規模的 App 通常有一套成熟通用的基礎庫&#xff0c;尤其是阿里系 App&#xff0c;一般需要依賴很多體系內的基礎庫。那么使用 Flutter 重新從頭開發 App 的成本和風險都較高。所以在 Native App 進行漸進式遷移…

Silverlight之工具箱使用1

我們在開發Silverlight項目時必定需要使用VS自帶的一些控件&#xff0c;但是這些有限的控件有時候難以滿足開發時的需求&#xff0c;因此MS給我們大家提供另外一套工具&#xff0c;來緩解Silverlight開發包的不足。此工具箱免費下載地址是&#xff1a;http://silverlight.codep…

apple tv設置_如何設置Apple HomePod

apple tv設置Apple’s HomePod smart speaker is finally here. If you bought one and are eager to get going, here’s how to set it up. 蘋果的HomePod智能揚聲器終于來了。 如果您購買了一個并且渴望上手&#xff0c;請按照以下步驟進行設置。 First off, before you eve…

leetcode 128最長連續序列

方法一&#xff1a;使用快排&#xff1a; //排序法&#xff0c;時間O(nlogn)&#xff0c;使用STL&#xff0c;只是驗證一下思想&#xff0c;非正解&#xff1b; class Solution { public:int longestConsecutive(vector<int>& nums) {sort(nums.begin(),nums.end());…

8月19學習練習[兩三個TableView并排顯示]

要求&#xff1a;在一個view中顯示兩個tableView&#xff0c;要求左右顯示的內容以及行數不一樣&#xff0c;且左邊每行顯示兩張圖片&#xff08;分別3個一輪回&#xff0c;2個一輪回&#xff09;并且顯示中國的城市名&#xff0c;右邊顯示水果名。點擊時分別顯示城市名或水果名…

word多級列表創建目錄_如何在Microsoft Word中創建和使用多級列表

word多級列表創建目錄Microsoft Word lets you easily create and format multilevel lists in your documents. You can choose from a variety of formatting options, including bulleted, numbered, or alphabetized lists. Let’s take a look. Microsoft Word使您可以輕松…

如何將多個Android Wear手表與單個手機配對

When it comes to “regular” wristwatches, a lot of people have different watches for different activities. It makes sense—a sporty watch for the gym, a nicer watch for the office, and a casual watch for everything else. If you want to live this life with…

Android系統的智能指針(輕量級指針、強指針和弱指針)的實現原理分析(3)...

提供引用計數器的類RefBase我們就暫時介紹到這里&#xff0c;后面我們再結合智能指針類一起分析&#xff0c;現在先來看看強指針類和弱指針類的定義。強指針類的定義我們在前面介紹輕量級指針的時候已經見到了&#xff0c;就是sp類了&#xff0c;這里就不再把它的代碼列出來了。…

ref:下一個項目為什么要用 SLF4J

ref:http://blog.mayongfa.cn/267.html 阿里巴巴 Java 開發手冊 前幾天阿里巴巴在云棲社區首次公開阿里官方Java代碼規范標準&#xff0c;就是一個PDF手冊&#xff0c;有命名規范&#xff0c;讓你知道自己原來取的每一個類名、變量名都是爛名字&#xff0c;真替你家未來孩子擔心…

洛谷P5055 【模板】可持久化文藝平衡樹(FHQ Treap)

題面 傳送門 題解 日常敲板子.jpg //minamoto #include<bits/stdc.h> #define R register #define inline __inline__ __attribute__((always_inline)) #define fp(i,a,b) for(R int i(a),I(b)1;i<I;i) #define fd(i,a,b) for(R int i(a),I(b)-1;i>I;--i) #define …

計算機突然藍屏無法啟動_為什么計算機無法立即啟動?

計算機突然藍屏無法啟動With the newer, more powerful hardware and improved operating systems that we have available to use these days, why does it still take as long as it does to fully boot a computer up each time? 借助我們如今可以使用的更新&#xff0c;更…

CCNA課堂練習:OSPF的介紹及配置

CCNA淺談OSPF的配置 今天我們來談談路由器OSPF的配置&#xff0c;那我先來介紹一下OSPF的特點&#xff1a;1、對網絡發生的變化能夠快速響應2、當網絡發生變化的時候發送觸發式更新?3、支持VLAN 4、管理方便ospf引用了區域的概念&#xff0c;區域分兩種&#xff1a;1、骨干區域…

vcenter 6.7 (vcsa)部署指南

閑言少敘&#xff0c;直達心靈。 一、部署提要1.1 vCenter Server Appliance(VCSA )6.7下載地址https://pan.baidu.com/s/1WUShsC23E2qIIBg7MPR87w 6lzb 二、安裝部署VCSA分為兩個階段安裝&#xff0c;下面我們開始第一階段2.1 打開之后&#xff0c;直接點擊安裝按鈕2.2部署設備…

如何停止Internet Explorer 11的建議站點?

Internet Explorer automatically suggests addresses and search results based on the partial address you’re typing out. If this feature irritates you, read on as we learn how to turn it off. Internet Explorer會根據您鍵入的部分地址自動建議地址和搜索結果。 如…