訪問博客查看 本文 最新內(nèi)容芬位,排版更美觀ヾ(?ω?`)o 如有錯誤歡迎指出~
Python 系列學(xué)習(xí)筆記:
學(xué)習(xí) Machine Learning 的時候發(fā)現(xiàn)需要用許多矩陣運(yùn)算和畫圖的庫,本文將以實用主義的方式記錄每次遇到的新用法。
2021 年貴系的暑培新增了「科學(xué)計算」內(nèi)容,本文部分內(nèi)容參考了清華 LZJ 同學(xué)的教程隔躲。本文將持續(xù)更新檬果。
Matplotlib 基礎(chǔ)
繪圖時最常用的模塊是 Matplotlib 中的 pyplot 模塊。繪圖時先調(diào)用相關(guān)繪圖函數(shù)盗尸,設(shè)置圖像各種細(xì)節(jié),最后調(diào)用 plt.show()
顯示圖片帽撑。
這時會出現(xiàn)一個基于 Qt 實現(xiàn)的交互窗口泼各,程序執(zhí)行到 plt.show()
時阻塞。在交互窗口中可以進(jìn)一步調(diào)整圖片格式細(xì)節(jié)或保存圖片亏拉,關(guān)閉窗口后程序繼續(xù)運(yùn)行扣蜻。下面以一個例子說明:
import numpy as np
from matplotlib import pyplot as plt
x = np.linspace(-4, 4, 30) # [-4, 4] 中長度為 30 的等差數(shù)列
y = np.sin(x) # 獲得 sin 值
plt.plot(x, y) # 以 x 為自變量,y 為因變量及塘,繪制折線圖
plt.show() # 顯示圖像莽使,程序阻塞
格式字符串
與 Matlab 相似,Matplotlib 使用事先約定好的字符串代表繪圖格式笙僚,將其寫入 plt.plot()
即可芳肌,如 plt.plot(x, y, 'bo')
即藍(lán)色圓圈標(biāo)記。
-
color
:繪制點的顏色肋层,支持以下縮寫亿笤,還可以用c='#000'
指定。
字符 | 顏色 | 字符 | 顏色 | 字符 | 顏色 | 字符 | 顏色 |
---|---|---|---|---|---|---|---|
b |
藍(lán)色 | r |
紅色 | m |
洋紅色 | k |
黑色 |
g |
綠色 | c |
青色 | y |
黃色 | w |
白色 |
-
marker
:繪制點的形狀栋猖。
字符 | 標(biāo)記 | 字符 | 標(biāo)記 | 字符 | 標(biāo)記 | 字符 | 標(biāo)記 |
---|---|---|---|---|---|---|---|
. |
點標(biāo)記 | > |
右三角標(biāo)記 | p |
五邊形標(biāo)記 | D |
菱形標(biāo)記 |
, |
像素標(biāo)記 | 1 |
三叉戟標(biāo)記 | * |
星形標(biāo)記 | d |
菱形標(biāo)記 |
o |
圓圈標(biāo)記 | 2 |
三叉戟標(biāo)記 | h |
六角形標(biāo)記 | 丨 |
豎線標(biāo)記 |
v |
倒三角標(biāo)記 | 3 |
三叉戟標(biāo)記 | H |
六角形標(biāo)記 | _ |
橫線標(biāo)記 |
^ |
正三角標(biāo)記 | 4 |
三叉戟標(biāo)記 | + |
+標(biāo)記 | ||
< |
左三角標(biāo)記 | s |
正方形標(biāo)記 | x |
x標(biāo)記 |
-
line
:繪制線的形狀净薛。
字符 | 格式 | 字符 | 格式 | 字符 | 格式 | 字符 | 格式 |
---|---|---|---|---|---|---|---|
- |
實線 | -- |
虛線 | -. |
點劃線 | : |
點線 |
特定類型圖
下面是一些常用的繪圖函數(shù)。更多官網(wǎng)案例:https://matplotlib.org/stable/gallery/index.html掂铐。
折線圖 plot()
plt.plot()
用于繪制折線圖罕拂,需要一系列點作為因變量和自變量揍异,函數(shù)接口如下:
matplotlib.pyplot.plot(*args, scalex=True, scaley=True, data=None, **kwargs)
觀察接口,可以發(fā)現(xiàn)有以下的用法:
- 傳入兩個等長數(shù)組或列表爆班,前者是自變量衷掷,后者是因變量。
- 只傳入一個數(shù)組或列表柿菩,自變量默認(rèn)從 0 開始整數(shù)遞增戚嗅。
- 傳入兩個列表,各包含兩個值枢舶,可以繪制一條直線懦胞。
散點圖 scatter()
plt.scatter()
用于繪制散點圖,需要兩個等長數(shù)組或列表凉泄,函數(shù)接口如下:
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, **kwargs)
其中只有 x
和 y
為必填項躏尉,s
代表每個點的大小,可以是常數(shù)也可以是列表后众。
子圖 subplot()
plt.subplot()
用于在一張圖里繪制多個子圖胀糜,函數(shù)接口如下:
matplotlib.pyplot.subplot(nrows, ncols, index, **kwargs)
其中只有 nrow
和 ncols
表示總共有多少子圖,index
代表其中第幾個蒂誉。如:plt.subplot(2,2,1)
教藻,也可以縮寫為 plt.subplot(221)
。
緊跟在 plt.subplot()
語句后面的語句繪制的就是 index
所指向的圖右锨,繪制完再次使用 plt.subplot()
語句切換到下一張子圖括堤。
其他輔助庫
除了上述的數(shù)據(jù)分析第三方庫,還有一些輔助工具庫也許有用绍移。因為不知道記在哪里悄窃,就先放在本節(jié)。
Time
time
是 Python 中處理時間的標(biāo)準(zhǔn)庫登夫,提供系統(tǒng)級精確計時功能(可以用于程序性能分析)广匙。其主要功能分為三塊:時間獲取、時間格式化恼策、程序計時,這里介紹計時相關(guān)內(nèi)容潮剪。
-
sleep(s)
:s
為休眠時間涣楷,單位秒,可以是浮點數(shù)抗碰。 -
perf_counter()
:返回一個 CPU 級別的精確時間計數(shù)值狮斗,單位為秒。
后者的使用由于計數(shù)器起點不確定弧蝇,連續(xù)調(diào)用求差值才有意義:
import time
import numpy as np
arr = np.arange(100000000)
start = time.perf_counter() # 計數(shù)器起點
arr = arr * 2
end = time.perf_counter() # 計數(shù)器終點
print('numpy time cost: %.3f s' % (end - start))
pipreqs
當(dāng)我們寫好一個 Python 項目之后碳褒,如果要開源代碼折砸,為了讓別人能快速運(yùn)行項目,一般可以提供一個 requirements.txt
的沙峻,用以配置環(huán)境睦授。
pipreqs
是用于自動生成上述文件的一個第三方庫,使用 pip install pipreqs
安裝摔寨,進(jìn)入項目根目錄去枷,執(zhí)行 pipreqs ./
即可。如果出現(xiàn)編碼錯誤是复,可以指定編碼方式解決:
pipreqs ./ --encoding utf-8
其他人則可以使用以下命令配置環(huán)境:
pip install -r requirements.txt