主要內容:
1 資料分析
a 概念: 是把隱藏在一些看似雜亂無章的資料背後資訊提煉出來,總結出所研究物件的內在規律.
b 三劍客: numpy pandas matplotlib
2 numpy 是python語言的乙個擴充套件程式庫, 支援大量的緯度陣列與矩陣運算,此外也針對陣列運算提供大量的數字函式庫.
a ndarray的概念: ndarray 是乙個多維的陣列物件,具有向量算術運算能力和複雜的廣播能力,並具有執行速度快和節省空間的特點。
b ndarray的建立:
1) 使用np.array()建立: 最簡單的方法是使用 numpy 提供的 array() 函式直接將 python 陣列轉換為 ndarray 陣列,array() 接受一切序列型別的物件,例如將乙個列表轉換成 ndarray 陣列.
import numpy as np#一維陣列的建立
np.array([1,2,3,4,5])
# 二維陣列的建立
np.array([[1,2,3], [3, 4, 5]])
np.array([[1, 2, 3], ['a', 4, 5]])
#注意: 1 numpy預設ndarray的所有元素的型別是相同的
# 2 如果傳過來的列表包含不同的型別,則統一為
# 統一型別,優先順序: str > float > int
3) 使用np.ones方法建立 :np.ones(shape, dtype=none, order='c')
np.ones(shape=(20, 30))
4) 使用np.full方法建立: np.full(shape, fill_value, dtype=none, order='c')
np.full(shape=(5,6), fill_value=100)
5) 使用np.linspace方法建立: np.linspace(start, stop, num=50, endpoint=true, retstep=false,dtype=none)等差數列
np.linspace(1, 100, num=20)
6) 使用np.arange方法建立: np.arange([start, ]stop, [step, ]dtype=none)
np.arange(0,100, step=2)
7) 使用np.random.randint(low, high=none, size=none, dtype='i')
np.random.seed(14) #固定時間種子,產生的隨機數就固定下來了np.random.randint(0,100,size=(5,7))
8) 使用np.random.randn(d0,d1,d2....dn) 標準正態分佈
arr = np.random.randn(4,4)
9) 使用np.random.random(size=none) 生成0到1的隨機數, 左閉右開
np.random.random(size=(3, 4))
c : ndarray屬性
1) 4個必記的引數: ndim 維度; shape 形狀 ; size 總長度 ; dtype 元素型別
d : ndarray基本操作
1) 索引: 一維與列表完全一致,多維時同理
2) 切片: 一維與列表完全一致,多維時同理
# 左邊是行,右邊是列arr = np.random.randint(60,120,size=(6,4))
# 獲取前兩行的資料
# arr[0:2]
# 獲取二維陣列的前2列
# arr[:, 0:2]
# 獲取前兩行和前兩列的資料
# arr[0:2,0:2]
# 將資料反轉 ::進行切片
# 將陣列的行倒序
# arr[::-1]
# 將陣列的列倒序
# arr[:, ::-1]
# 全部倒序
arr[::-1, ::-1]
3) 變形 : 使用arr.reshape()函式, 注意引數是乙個tuple!基本使用:
將一維陣列轉變為多維陣列
arr2 = np.random.randint(20,30, size=(6,4))arr2
# 轉變為一維陣列
arr12 = arr2.reshape(24)
arr12
# 轉變成三維陣列
arr32 = arr2.reshape(2,4,3)
arr32
# 自動計算行和列
arr4 = arr2.reshape(3,-1)
arr4
arr5 = arr2.reshape(-1,6)
arr5
4) 級聯 一維陣列 二維陣列 多維陣列的級聯, 實際操作中級聯多為二維陣列
np.concatenate() axis=0表示的是豎直方向 1水平方向
arr1 = np.random.randint(0,100, size=(3,4))arr2 = np.random.randint(0,100, size=(3,4))
np.concatenate((arr1,arr2), axis=1) 水平方向
np.concatenate((arr1,arr2), axis=0) 豎直方向
5) 切分: 與級聯類似, 三個函式完成切分工作: np.split(arr,行/列,軸): 引數2是乙個列表型別 np.vsplit np.hsplit
6) 副本: 所有賦值操作不會為ndarray的任何元素建立副本, 對賦值後的物件的操作也會對原來的物件生效.
可使用copy建立副本.
arr = np.array([1,2,3,4,5])a = arr
a[1] = 10
print(arr)
arr1 = arr.copy()
arr1[0] = 20
e : ndarray的聚合操作
arr.sum()arr.std()
arr.mean()
f: 廣播機制
ndarray廣播機制的三條規則:
缺失維度的陣列, 則維度補充為進行運算的陣列的維度.缺失的陣列元素使用已有元素進行補充.
規則一: 為缺失的維度補1
規則二: 缺失元素用已用值補充
規則三: 缺失維度的陣列只能有一行或者是一列
例一: m = np.ones((2,3)) a = np.arange(3) 求m + a# 兩行三列的矩陣1
m = np.ones((2,3))
# 一維陣列0,1,2
a = np.arange(3)
m+aa = np.arange(3).reshape(3,1)
b = np.arange(3)
a+b習題3 : a = np.ones((4,1)) b = np.arange(4) 求a+b
a = np.ones((4,1))
b = np.arange(4)
a+b
h : ndarray排序
# 1 快速排序np.sort()與ndarray.sort()都可以, 但有區別:# np.sort()不改變輸入
# ndarray.sort()本地處理, 不占用空間, 但改變輸入.
arr = np.array([3,8,5,7,6])
arr# 排序
np.sort(arr)
部分排序
2 部分排序 np.partition(a,k) 有的時候我們不會對全部的資料感興趣, 我們可能對最小的或者最大的一部分感興趣. 當k為正時, 我們想得到最小的k個數 當k為負時, 我們想得到最大的k個數arr = np.array([1,2,3,4,5])
np.partition(arr, kth=4)
numpy資料分析
2020 11 2 import array arr array.array i list range 10 i表示整型,生成序列後不能改變資料型別 多維陣列ndarray方便處理多維度運算,運算效率高 nparr np.array list range 10 修改值,浮點數取整數段 nparr 2...
資料分析 Numpy
什麼是numpy numpy這個詞 於兩個單詞 numerical和python。numpy是python中的乙個運算速度非常快的乙個數學庫,它非常重視陣列,很多的資料科學的包都是依賴於numpy的。它允許你在python中進行向量和矩陣計算,並且由於許多底層函式實際上是用c編寫的,因此你可以體驗在...
爬蟲 資料分析 numpy
資料分析 是把隱藏在一些看似雜亂無章的資料背後的資訊提煉出來,總結出所研究物件的內在規律 資料分析三劍客 numpy,pandas,matplotlib numpy numerical python 是 python 語言的乙個擴充套件程式庫,支援大量的維度陣列與矩陣運算,此外也針對陣列運算提供大量...