1. 程式人生 > >python 資料分析-numpy

python 資料分析-numpy

1. NumPy簡介

NumPy ( Numerical Python) 是高效能科學計算和資料分析的基礎包. 其部分功能如下: ndarry: 一個具有向量算術運算和複雜廣播能力的快速且節省空間的多維陣列. 用於對整數進行快速運算的標準數學函式 用於讀寫磁碟資料的工具以及用於操作記憶體對映檔案的工具 線性代數,隨機數生成以及傅立葉變換功能 用於整合由C, C++, Fortran 等語言編寫的程式碼的工具

2. ndarry: 一種多維陣列物件

(1) 建立ndarry

data1 = [6, 7.5, 8, 0 ,1] arr1 = np.array(data1) 巢狀序列: data2 = [[1, 2, 3, 4], [5, 6, 7, 8]]
arr2 = np.array(data2) 陣列行和大小: 資料型別:
陣列建立函式: array                   將輸入資料( 列表, 元組, 陣列或其他序列型別) 轉換為 ndarray. 要麼推斷出dtype, 要麼顯示指定dtype                             . 預設直接複製輸入資料. asarray               將輸入轉換為ndarray, 如果輸入本身就是一個ndarray就不進行輔助 arange                類似於內建的range, 但返回的是一個ndarray而不是列表 ones, ones_like  根據指定的形狀和dtype建立一個全1陣列. Ones_like 以另一個數組為引數, 並根據其形狀和dtype創                              建一個1陣列
zeros, zeros_like     類似於ones和ones_like, 只不過產生的全是1陣列 empty, empty_like   建立陣列, 之分配記憶體空間但不填衝任何值 eye, identity             建立一個正方的NXN單位矩陣(對角線為1, 其餘為0)

(2) ndarray 的資料型別

int8, uint8                 i1, u1                 有符號和無符號的8位(1個位元組)整型 int16, uint16             i2, u2                  ............................16.. 2...................
int32, uint32             i4, u4                  ............................32...4................... int64, uint64             i8, u8                  ............................64...8................... float16                      f2                        半精度浮點數 float32                      f4或f                    標準的單精度浮點數, 與C的float相容 float64                      f8或d                   標準的雙精度浮點數.  與C的double和python的float物件相容 float128                    f16或g                 擴充套件精度浮點數 complex64, complex128 c8, c16         分別用兩個32位, 64位或者128位浮點數表示的複數 complex256              c32     bool                           ?                         儲存True和False值的布林型別 object                         O                        python物件型別 string_                         S                       固定長度的字串型別(每個字元1個位元組).例如,要建立一個長度為10的字串,                                                              應使用S10 unicode_                      U                      固定長度的unicode1型別( 位元組數由平臺決定). 跟字串的定義方式一樣(如                                                                   u10) 型別轉換: asType()

( 3 ) 陣列和標量之間的運算

( 4 ) 基本的索引和切片

Numpy陣列的索引是一個非常豐富的主題        當將一個標量值賦值給一個切片時(如arr[5:8] = 12), 該值會自動傳播到整個選區.        陣列切片是原始陣列的檢視, 這意味著資料不會被複制, 檢視上的任何修改都會直接反映到源陣列.

( 5 ) 數學和統計方法

sum                 對陣列中全部或某軸向的元素求和.零長度的陣列的sum為0 mean               算術平均數. 零長度的陣列的mean為NaN std, var            分別為標準差和方差,自由度可掉( 預設為n ) min, max          最大值和最小值 argmin, argmax  分別為最大和最小元素的索引 cumsum            所有元素的累計和 curpro的           所有元素的累計積

( 6 ) 用於布林型陣列的方法

       上面的方法中,布林值會被強制轉換為1和0. any     測試陣列中是否存在一個或多個True all       監測陣列中所有值是否都是True

( 7 ) 排序

sort            不帶引數全排序, 也可將指定要排序的軸. np.sort 返回的是陣列的已排序副本, 而就地排序則會修改陣列本身.

( 8 ) 唯一化以及其他的集合邏輯

np.unique, 用於找出陣列中的唯一值並返回已排序的結果. intersect1d(x, y)        計算x和y中的公共元素, 並返回有序結果 uniod1d(x, y)             計算x和y的並集, 並返回有序結果 in1d(x, y)                   得到一個表示 " 得x的元素是否包含於y" 的布型陣列 setdiff1d(x, y)             集合的差, 集元素在x中不在y中 setor1d(x, y)              集合的對稱差, 即存在於一個數組中但不同時存在於兩個陣列中的元組

( 9) 用於陣列的檔案輸入輸出

( 10 ) 將陣列以二進位制格式儲存到磁碟

np.save('filename', arr) 如果檔案路徑末尾沒有副檔名.npy, 則副檔名會被自動加上. np.load('filePath') np.savez('filename.npz', a= arr, b=arr) 將多個數組儲存到一個壓縮檔案中, 將陣列以關鍵字的形式傳入 arch =  np.load('filename.npz') arr = arch['a']

( 11 ) 存取文字檔案

np.loadtxt('filepath', delimiter=',') np.savetxt()

3. 線性代數

diag                         以一維陣列的形式返回方陣的對角線(或非對角線) 元素, 或將一維陣列轉換為方陣 dot                           矩陣乘法 trace                        計算對角線元素的和 det                           計算矩陣行列式 eig                           計算方陣的本徵值和本徵向量 inv                           計算方陣的逆 pinv                         計算矩陣的Moore-Penrose偽逆 qr                            計算QR分解 svd                         計算奇異值分解 ( SVD ) solve                      解線性方程組Ax = b, 其中A為一個方陣 lstsq                       計算Ax = b 的最小二乘解

4. 隨機數生成

seed                   確定隨機數生成器的種子 permutation        返回一個序列的隨機排列或返回一個隨機排列的範圍 shuffle                對一個序列就地隨機排序 rand                    產生均勻分佈的樣本值 randint               從給定的上下限範圍內隨機選取整數 randn                  產生政態分佈 ( 平均值為0,標準差為1 ) 的樣本值, 類似於MATLAB 介面 binomial             產生二項分佈的樣本值 normal                產生正態( 高斯 ) 分佈的樣本值 beta                   產生Beta 分佈的樣本值 chisquare            產生卡方分佈的樣本值 gamma              產生Gamma分佈的樣本值 uniform                產生在[0, 1) 中均勻分佈的樣本值