Python數據分析之Numpy庫(筆記)

2.1 ndarray多維數組
2.1.1 建立ndarray數組
經過NumPy庫的array函數,便可輕鬆地建立ndarray數組。NumPy庫能將數據(列表,元組,數組,或其餘序列類型)轉換爲ndarray數組
第一步先要引入NumPy庫:import numpy as np
array函數 語法;np.array(data)
參數說明:data爲須要轉換爲ndarray數組的序列
一般來講,ndarray是一個通用的同結構數據容器,即其中的全部元素都須要是相同的類型,當建立好一個ndarray數組時,同時會在內存中儲存ndarray的shape和dtype
shape:ndarry維度大小的元組
dtype:解釋說明ndarray數據類型的對象
NumPy庫還有一些函數能夠建立特殊的數組
arange 相似於內置的range函數,用於建立數組
ones 建立指定長度或形狀的全1數組
ones_like 以另外一個數組爲參考,根據其形狀和dtype建立全1數組
zeros,zeros_like 同上,建立沒有具體值的數
eye,identity 建立正方形的N*N單位矩陣python

2.1.2 ndarray對象屬性
.ndim 即數據軸的個數
.shape 數組的維度
.size 元素的個數
.dtype 數據類型
.itemsize 數組中每一個元素的字節大小數組

2.1.3 nadarry數據類型
浮點數(float),整形(int),複數(complex),布爾值(bool),字符串(string_),Python對象(object)
astype方法進行數據類型的轉換
語法:arr.astype(np.float64|'float64')ide

2.1.4 數組轉換
1.數組重塑
reshape方法改變其數據維度
語法:arr.reshape((x,y))
x:行
y:列,能夠設置爲-1,表示數組的維度能夠經過數據自己來推斷
數據散開(ravel)或扁平化(flatten)
語法:arr.ravel() 語法:arr.flatten()
說明:arr:ndarray數組 說明:arr:ndarray數組
2.數組合並
conzatenate方法經過指定軸方向,將多個數組合並在一塊兒
注意:軸用來爲超過一維的數組定義的屬性,二維數組擁有兩個軸:第0軸(axis=0)沿着行的垂直往下,第1軸(axis=1)沿着列的方向水平延伸
語法:np.concatenate([arr1,arr2],axis=0|1) axis:指定軸
vstack和hstsck方法也能夠進行數組合並
語法:np.vstack((arr1,arr2)) 語法:np.hstack((arr1,arr2))
3.數組拆分
split方法能夠將數組拆分爲多個數組
語法:np.split(arr,indices_or_sections,axis=0)
arr 要切分的數組
indices_or_sections 若是是一個整數,就用該數平均切分,若是是一個數組,爲沿軸切分的位置(左開右閉)
axis 沿着哪一個維度進行切向,默認爲0,橫向切分。爲1時,縱向切分
4.數組置換和軸對換
轉置是數組重塑的一種特殊形式,能夠經過transpose方法進行轉置
transpose方法須要傳入軸編號組成的元組,這樣就完成了數組的轉置
數組的T屬性,也可用於數組的轉置
swapaxes方法用於軸對換函數

2.1.5 NumPy的隨機數函數
rand 產生均勻分佈的樣本值
randint 給定範圍內取隨機整數
randn 產生正態分佈的樣本值
seed 隨機數種子
permutation 對一個序列隨機排序,不改變原數組
shuffle 對一個序列隨機排序,改變原數組
uniform(low,high,size) 產生具備均勻分佈的數組,low表示起始值,high表示結束值,size表示形狀
normal(loc,scale,size) 產生具備正態分佈的數組,loc表示均值,scale表示標準差
poisson(lam,size) 產生具備泊松分佈的數組,lam表示隨機事件發生率測試

2.2 數組的索引和切片
2.2.1 數組的索引
一維數組的索引相似於Python列表
數組的切片返回的是原始數組的視圖。簡單地說,視圖就是原始數組的表現形式,切片操做並不會產生新數據,這就意味着在視圖上的操做都會使原數組發生改變。
若是須要的並不是視圖而是要複製數據,則能夠經過copy方法來實現
在高維數組中,若是省略後面的索引,則會返回低一個維度的數組
2.2.2 數組的切片
一維數組的切片一樣相似於Python列表
多維數組的切片是按照軸方向進行的,當在中括號中輸入一個參數時,數組就會按照0軸(也就是第一 軸)方向進行切片
python numpy數組中冒號的使用:
python中冒號實際上有兩個意思: 1.默認所有選擇; 2.指定範圍(注意這裏含左不含右)
2.2.3 布爾型索引
注意:布爾型數組長度必須和被索引的長度一致
2.2.4 花式索引
花式索引是NumPy中的術語,它能夠經過整數列表或數組進行索引
也可使用np.ix_函數完成一樣的操做scala

2.3 數組的運算
2.3.1 數組和標量間的運算
數組之因此很強大並且重要的緣由,是其不須要經過循環就能夠完成批量計算,也就是矢量化。相同維度的數組的算術運算均可以直接應用到元素中,也就是元素級運算。
2.3.2 通用函數
通用函數是一種對數組中的數組執行元素級運算的函數
一元函數:函數傳入一個數組
abs函數求絕對值
square函數求平方
二元函數:有一些函數須要傳入兩個數組並返回一個數組
add函數用於兩個數相加
minimum函數能夠計算元素最小值
有些通用函數還能夠返回兩個數組,例如modf函數能夠返回數組元素的小數和整數部分
2.3.3 條件邏輯運算
若是須要經過cond的值來選取arr1和arr2的值,當cond爲True時,選擇arr1的值,不然選擇arr2的值,能夠經過if語句判斷來實現
if方法存在的兩個問題:第一,對大規模數組處理速度不是很快;第二,沒法用於多維數組 where函數能夠解決這兩個問題
where函數:where(condition,x,y) 知足條件(conditin),輸出x,不知足輸出y
2.3.4 統計運算
NumPy庫支持對整個數組或指定軸向的數據進行統計計算
sum函數用於求和
mean函數用於求算術平均數
std,var函數用於求標準差和方差
min,max函數求最小值和最大值
argmin,argmax函數求最小和最大元素索引
cumsum函數求全部元素的累計和
cumpord函數求全部元素的累計積
2.3.5 布爾型數組運算
對於布爾型數組,其布爾值會被強制轉換爲1(Ture)和0(False)
any和all也能夠用於布爾型數組運算
any函數用於測試數組中是否存在一個或多個Ture
all函數用於檢查數組中的全部值是否爲Ture
2.3.6 排序
與Python列表類似,NumPy數組也能夠經過sort方法進行排序
sort函數進行排序(從小到大) 對於多維度數組,能夠經過指定軸方向進行排序
2.3.7 集合運算
NumPy庫中提供了針對一維數組的基本集合運算。在數據分析中,常使用np.unique方法來找出數組中的惟一值
注意:對惟一-值進行了排序
unique(x)惟一值
intersectld(x,y)公共元素
unionld(x,y)並集
setdiffd(x,y)集合的差
setxorld(x,y)交集取反
2.3.8 線性代數
數組的運算是元素級的,數組相乘的結果是各對應元素的積組成的數組。而對於矩陣而言,須要求的是點積,這裏NumPy提供了用於矩陣乘法的dot函數。
點積:在數學中,又稱數量積(dot product; scalar product),是指接受在實數R上的兩個向量並返回一個實數值標量的二元運算。它是歐幾里得空間的標準內積
dot函數矩陣乘法orm

2.4 數組的存取
2.4.1數組的存儲
經過np.savetxt方法能夠對數組進行存儲
np.savetxt(fname, X, fmt= *%.18e',delimiter=' ,newline="\n',header=", footer=", comments='# ' encoding=None)對象

2.4.2數組的讀取
對於存儲的文件,能夠經過np.loadtxt方法進行讀取,並將其加載到一個數組中
np.loadtxt(fname, dtype= <class'float'>, comments='#',delimiter=None, converters=None, skiprows=0, usecols =None,unpack=False, ndmin=0, encoding='bytes')排序

拓展文件存儲方法:索引

2.5 綜合實例2.5.1 圖像轉換圖像通常採用的是RGB色彩模式,即每一個像素點的顏色有R (紅)、G(綠)、B(藍)組成。經過三種顏色的疊加能夠獲得各類顏色,每一個顏色的取值範圍爲0~255。Python中的PIL庫是一 個處理圖像的第三方庫

相關文章
相關標籤/搜索