- 推薦自己的專欄:分享一些Python案例,將所學用出來
- 隨着Python語言生態環境的完善,衆多科學計算和數據分析庫(例如NumPy、SciPy、Pandas、Matplotlib、IPython等),使得Python成爲科學計算和數據分析的首選語言
Python科學計算和數據分析庫簡介
科學計算和數據分析庫:
- NumPy
NumPy是Python數據處理的底層庫,是高性能科學計算和數據分析的基礎,許多其它科學計算庫都基於NumPy庫 - SciPy
SciPy是Python解決科學計算中常見問題的工具集團,其不同子模塊對應於不同的應用,包括:線性代數、插值、積分、最優化、圖像處理、統計等等 - Pandas
Pandas是Python的高級數據分析工具庫 - Matplotlib
Matplotlib是Python最流行的繪圖程序庫。Seaborn和Prettyplotlib是在Matplotlib的基礎上改進功能的繪圖程序庫 - SciKit
SciKit程序庫爲SciPy、NumPy和Python提供了專業化的擴展。例如,scikit-learn是用於機器學習和數據挖掘的庫 - IPython
IPython是基於Python Shell的交互式解釋器,功能更加強大,被廣泛應用於交互式科學計算
使用IPython Notebook進行科學計算
第一種安裝方法:如果你安裝了Python面向科學計算的環境Anaconda。安裝Anaconda時會安裝Jupyter Notebook (以前的版本也叫IPython Notebook)。
第二種安裝方法:在控制檯cmd中輸入以下命令(使用pip命令安裝)
先更新pip包
python -m pip install -U pip
然後安裝jupyter(即IPython Notebook)
python -m pip install jupyter
如果在安裝時出現這個問題:pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host=‘files.pythonhosted.org’, port=443): Read timed out.
在cmd中輸入以下命令,將超時限制修改一下
pip --default-timeout=100 install -U jupyter
Jupyter Notebook是一種交互式的數據分析與記錄工具,它既是一個交互計算平臺,又是一個記錄計算過程的“筆記本”,它是數據分析、科學計算以及交互計算的“利器
Jupyter Notebook 由服務端和客戶端兩部分組成。服務端可以運行在本機,也可以運行在遠程服務器上,它主要包含負責運算的iPython kernel, 以及一個HTTP/HTTPS服務器(Tornado) ,主要負責代碼的解釋和計算;而客戶端是瀏覽器,主要負責與用戶進行交互,接受用戶的輸入,以及渲染輸出。
Jupyter Notebook的使用示例
一:運行Jupyter Notebook
windows + R
輸入 cmd ,點擊確定
在cmd中輸入 jupyter notebook
在瀏覽器中會出現如下界面:
Jupyter Notebook的特點是支持可重複性的互動計算,即可以重複更改並且執行曾經的輸入記錄。它可以記錄演算過程,並保存成其他很多格式,例如Python腳本、HTML、PDF等。很多課程、數據和博客是用Notebook寫作的。
二:新建Notebook文件
打開Notebook,可以看到主面板。在菜單欄中有Files、Running、Clusters三個選項,用到最多的是Files
單擊如圖的“New”下拉菜單,選擇Python 3,新建一個名爲Untitled的Notebook
JupyterNotebook使用瀏覽器作爲界面,向後臺的IPython服務器發送請求,並顯示結果。在瀏覽器的界面中使用單元格(Cell) 輸入保存各種信息。
Cell主要有兩種類型:
- Code(輸入、編輯和執行Python代碼)
- MarkDown (輸入、編輯和顯示Markdown格式的文本)
三:輸入markdown文本
在第一個單元格輸入框中,輸入“點贊、收藏、關注”,並設置單元格的類型爲markdown
四:輸入並執行Python代碼
輸入快捷鍵B也可以在下方插入一個單元格
輸入代碼,並執行(按快捷鍵 Ctrl+Enter,或者點擊運行按鈕)
Python在線性代數中的應用
線性代數(linear algebra) 是數學的一個分支,主要研究矩陣理論、向量空間、線性變換和有限維線性方程組等內容。使用Python的科學計算庫NumPy和SciPy,可以進行線性代數的學習和研究。
一:創建向量和矩陣(數組)
通常使用NumPy的array函數可以創建向量和矩陣(數組)
- 一維數組表示向量
- 二維數組表示矩陣
- 也可以使用函數
zeros
、zeros_like
、ones
、ones_like
、empty
、empty_like
、arange
、linspace
、numpy. random.rand
、numpy.random.randn
、fromfunction
、fromfile
等函數創建特殊數組。
二:矩陣的運算
使用NumPy包,矩陣的加法和減法可以直接使用運算符+和一,乘法則使用函數dot
三:線性方程組的求解
已知線性方程組AX=b,則X=A-1b。 例如:
- x + 3y + 5z = 10
- 2x + 5y + z = 8
- 2x + 3y + 8z = 3
則: