1. 程式人生 > >【Python】資料分析之numpy包

【Python】資料分析之numpy包

numpy使用示例

前言

numpy,全稱numeric python,是一個由多維陣列物件和用於處理陣列的例程集合組成的庫,是python資料分析中最基礎的工具。利用numpy,可以輕鬆地使用python達到matlab中的矩陣、線性代數等等運算。
下面給出一些示例的使用方法,作為入門。完整的API文件可以參考文末給出的參考資料。

示例程式碼

# coding=utf-8
# author=BebDong
# 10/14/18

import numpy as
np # 匯入線性方程組相關 from numpy.linalg import * # ndarray 測試 def ndarray_test(): print("ndarray:") # 普通列表 lst = [[1, 3, 5], [2, 4, 6]] print(type(lst)) # numpy ndarray np_lst = np.array(lst) print(type(np_lst)) # 指定型別定義 np_lst = np.array(lst, dtype=np.float) # 常用屬性:陣列行數和列數
print(np_lst.shape) # 常用屬性:陣列維數 print(np_lst.ndim) # 常用屬性:資料型別 print(np_lst.dtype) # 常用屬性:元素大小 print(np_lst.itemsize) # 常用屬性:陣列元素個數 print(np_lst.size) # 常用陣列測試 def arrays_test(): print("常用陣列:") # 0陣列,方便進行資料初始化 print(np.zeros([2, 3])) # 1陣列 print
(np.ones([3, 5])) # 列印隨機數矩陣(0~1均勻分佈) print(np.random.rand(2, 4)) # 列印隨機數 print(np.random.rand()) # 指定範圍列印隨機整數 print(np.random.randint(1, 10)) print(np.random.randint(1, 10, [3, 3])) # 正態分佈隨機數 print(np.random.randn()) print(np.random.randn(2, 4)) # 在指定範圍產生隨機數 print(np.random.choice([10, 2, 8, 9])) # beta分佈 print(np.random.beta(1, 10, 20)) # 其他常見分佈亦可…… # numpy常用操作 def operations(): # 產生等差數列,預設公差為1,可覆蓋 print(np.arange(1, 51, 5)) # 將產生的一維數列重定形為n維陣列 print(np.arange(1, 13, 2).reshape([3, -1])) # numpy中array的算術操作將作用在每個元素身上 lst = np.arange(1, 11) # 指數操作:item = e^item print(np.exp(lst)) # item = 2^item print(np.exp2(lst)) # item = sqrt(item) print(np.sqrt(lst)) # item = sin(item) print(np.sin(lst)) # item = ln(item) print(np.log(lst)) # 單個數組進行不同深度的運算,axis指定進行到哪種深度,最大取值為維數-1 lst = np.array([[[1, 2, 3, 4], [5, 6, 7, 8]], [[9, 10, 11, 12], [13, 14, 15, 16]], [[17, 18, 19, 20], [21, 22, 23, 24]] ]) print(lst.sum()) print(lst.sum(axis=2)) print(lst.max()) print(lst.max(axis=1)) print(lst.min()) # 兩個陣列的運算,作用於對應位置元素 lst1 = np.array([1, 2, 3, 4]) lst2 = np.array([5, 6, 7, 4]) # 普通加減乘除,或者乘方 print(lst1 + lst2) print(lst1 - lst2) print(lst1 / lst2) print(lst1 * lst2) print(lst1 ** 2) # 矩陣點乘 print(np.dot(lst1.reshape(2, 2), lst2.reshape(2, 2))) # 陣列層面的運算:並集 print(np.concatenate((lst1, lst2), axis=0)) print(np.hstack((lst1, lst2))) # 合併成一個數組,合併前的陣列作為結果陣列的一個元素 print(np.vstack((lst1, lst2))) # 分割陣列 print(np.split(lst1, 4)) # 拷貝一個數組 print(np.copy(lst2)) # 線性方程組 def linearAlgebra(): # 單位矩陣 print(np.eye(3)) # 矩陣的逆 lst = np.array([[1, 2], [3, 4]]) print(inv(lst)) # 轉置 print(lst.transpose()) # 行列式 print(det(lst)) # 特徵值和特徵向量:第一個元素指特徵值,第二個指特徵向量 print(eig(lst)) # 解線性方程組:x+2y=5,3x+4y=7 result = np.array([[5.], [7.]]) print(solve(lst, result)) if __name__ == '__main__': ndarray_test() arrays_test() operations() linearAlgebra() # 其他更多的操作

參考資料

numpy官網網站:http://www.numpy.org/
易百教程:https://www.yiibai.com/numpy