Python科學工具筆記

megachen發表於2018-08-29

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() # 顯示圖形


相關文章