Python 科學工具筆記
numpy
-
a = numpy.array([1,2,3,4]);// 建立一個numpy的數組對象
此時a.shape顯示的值為(4,);
由此得出結論在一維的數組中, 數組的是列優先的
-
numpy.random.uniform(low, high):
産生在low和high之間的随機數
-
numpy.vdot(arrA, arrB):
計算arrA與arrB的數量積
- numpy.max(), .min(), .sum(), .average()
- numpy.random.randn():
Scipy
-
scipy.integrate.quad(funcname, low, high): funcname函數的僅僅傳回一個需要求解積分的式子
low: 積分下線
high: 積分上限
matplotlib.pyplot
import matplotlib.pyplot as plt
plt.hist()
plt.plot()
plt.pie()
plt.bar()
plt.show()
plt.scatter()
numpy庫使用
- genfromtxt(filename, delimiter, dtype, skip_header=1/2)
filename: 檔案名
delimiter: 分隔符, 用于分隔檔案中每行的内容放入到矩陣中
dtype: 矩陣中的類型, ATTENTION: numpy矩陣中的所有元素是同一個類型
skip_header: 是否跳過首行
- numpy.array(list): 根據list傳回一個numpy的矩陣
- obj.shape: 傳回次元資訊
- obj.dtype: 傳回numpy的dtype類型對象, 顯示矩陣中的元素類型
- [2], [2:3]: 對以為矩陣, 擷取指定的元素
對于二維矩陣元素的擷取:
[2:3, 3:4]: 逗号左側表示對行的切片, 逗号右邊表示對列的切片
- 對numpy中的矩陣進行操作符的操作(<. ==, >)等指的是對矩陣中每一個元素進行該操作, bool類型的操作傳回的是bool序列
- 矩陣中的切片可是一個bool類型的序列, [bool_list], 傳回對應的為True的元素組成的序列
- obj.astype(dtype): 改變元素的類型
- obj.min(),.max(), sum(),其中可以添加預設參數, axis=1|0, 如果為0表示按照列為機關計算min, max等, 傳回每一行的min, max等, 如果為axis=1則是以行為機關
- numpy.isnan(array): 傳回bool序列, 判斷元素的空項
- obj.arange(0, 100, 2)
- obj.linspace(0, 100, 100)
- obj.ndim: 傳回矩陣的次元
- obj.size: 元素個數
- obj.zeros(tuple)
- obj.ones(tuple)
- numpy.random.random((2, 3)): 生成2行3列的元素為随機數的矩陣
- obj0.dot(obj1)或者numpy.dot(obj0, obj1): 矩陣乘法, obj0的列向量與obj1的行向量的數量積
- numpy.exp(array), numpy.sin(array), numpy.sqrt(array), numpy.floor(array)
- obj.ravel(): 解開矩陣, 将矩陣拉成以為向量
- numpy.vstack(obj0, obj1): 将obj0與obj1垂直拼接
- numpy.hstack(obj0, obj1): 将obj0與obj1水準拼接
- numpy.vsplit(obj, 3): 将obj垂直切兩刀平均分為3個矩陣
- numpy.hsplit(obj, 3): 同理
- numpy.vsplit(obj, (2, 3)): 以2行3列的元素所在的列為分隔線分隔為3份
- numpy.hsplit(obj, (2, 3)): 同理
- numpy.reshape(2, 3): 調整矩陣的行和列
- obj.view(): 淺拷貝, 不建議使用
- obj.copy(): 深拷貝
- obj.tile(2, 3): 也為拷貝, 但是拷貝出來的矩陣的行是原來的2倍, 列是原來的3倍
- obj.sort(axis=1|0): 按照行或者列進行判斷
pandas庫使用(pandas是對numpy的封裝, 随意可以混合使用)
- pandas.read_csv(filename): 讀取檔案傳回DataFrame對象(df), 隻要資料是以逗号分隔的都可使用read_csv讀取
- df.dtypes傳回類型
- df.head(3): 檢視前3行
- df.tail(3): 檢視後3行
- df.columns: 列名
- df.shape: 次元資訊, 表格的行和列資訊
- df.loc[index]: 傳回指定行的資訊
- df['string']: 傳回指定的名稱的列資訊, 傳回Series, DataFrame就是有很多個Series中組成的
- 在pandas中的python内置的str類型為object類型(dtype中顯示的)
- obj.dropna(): 去掉有空項的行
- Series對象
series.index傳回index序列
series.sortindex排序index
series.sortvalues排序values
series[0]|series['str']: 傳回索引對應的value
matplotlib.pyplot庫使用
- 畫出折線圖
import matplotlib.pyplot as plt
x_values = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
y_values = [100, 200, 300, 120, 12, 213, 123]
x_label = 'Days'
y_label = 'Rain flow'
line_color = 'red'
legend_string = 'Trend'
plt.plot(x_label, y_label, c=line_color, label=legend_string) # plot函數作用: 畫出圖或者線(指的僅僅是折線, 柱形圖的, 并不包含坐标的繪畫)
plot函數參數介紹:
1: x軸資料序列
2: y軸資料序列
3: c: 折線的顔色
4: label: 折線對應的名稱
plt.xlabel(x_label)
plt.ylabel(y_label)
plt.title('Demo')
plt.ledend(loc='best') # 顯示折線對應的label, 就是圖例
plt.xticks(rotation=45) # 設定x軸顯示的資料的傾斜度為45, 便于顯示标簽
plt.show() # 顯示圖形