利用Python進行資料分析:【NumPy】

來源:互聯網
上載者:User

標籤:安裝方法   maximum   size   檔案的   lin   for   建立   end   對應檔   

一、NumPy:數組計算
1、NumPy是高效能科學計算和資料分析的基礎包。它是pandas等其他各種工具的基礎。
2、NumPy的主要功能:

# ndarray,一個多維陣列結構,高效且節省空間的# 無需迴圈對整組資料進行快速運算的數學函數# *讀寫磁碟資料的工具以及用於操作記憶體對應檔的工具# *線性代數、隨機數產生和傅裡葉變換功能# *用於整合C、C++等代碼的工具

3、安裝方法:pip install numpy

二、NumPy:ndarray-多維陣列對象
1、建立ndarray:np.array()
2、ndarray是多維陣列結構,與列表的區別是:
  --數組對象內的元素類型必須相同
  --數組大小不可修改
3、常用屬性:

  --T 數組的轉置(對高維數組而言)
  --dtype數組元素的資料類型
  --size數組元素的個數
  --ndim數組的維數
  --shape數組的維度大小(以元組形式)
4、常用方法

# array.shape                         array的規格# array.ndim      # array.dtype                         array的資料規格# numpy.zeros(dim1,dim2)              建立dim1*dim2的零矩陣# numpy.arange# numpy.eye(n) /numpy.identity(n)     建立n*n單位矩陣# numpy.array([…data…], dtype=float64 )# array.astype(numpy.float64)         更換矩陣的資料形式# array.astype(float)                 更換矩陣的資料形式# array * array                       矩陣點乘# array[a:b]                          切片# array.copy()                        得到ndarray的副本,而不是視圖# array [a] [b]=array [ a, b ]        兩者等價# name=np.array([‘bob‘,‘joe‘,‘will‘]) res=name==’bob’ res= array([ True, False, False], dtype=bool)# data[True,False,…..]                索引,只索取為True的部分,去掉False部分# 通過布爾型索引選取數組中的資料,將總是建立資料的副本。# data[ [4,3,0,6] ]                   索引,將第4,3,0,6行摘取出來,組成新數組# data[-1]=data[data.__len__()-1]# numpy.reshape(a,b)                  將a*b的一維數組排列為a*b的形式# array([a,b,c,d],[d,e,f,g])          返回一維數組,分別為[a,d],[b,e],[c,f],[d,g]# array[ [a,b,c,d] ][:,[e,f,g,h] ]=array[ numpy.ix_( [a,b,c,d],[e,f,g,h] ) ]# array.T                             array的轉置# numpy.random.randn(a,b)             產生a*b的隨機數組# numpy.dot(matrix_1,matrix_2)        矩陣乘法# array.transpose( (1,0,2,etc.) )     對於高維數組,轉置需要一個由軸編號組成的元組

三、NumPy:ndarray-資料類型

# ndarray資料類型:dtype:# 布爾型:bool_# 整型:int_ int8 int16 int32 int64# 無符號整型:uint8 uint16 uint32 uint64# 浮點型:float_ float16 float32 float64# 複數型:complex_ complex64 complex128

四、NumPy:ndarray-建立

# array()         將列錶轉換為數組,可選擇顯式指定dtype# arange()        range的numpy版,支援浮點數# linspace()      類似arange(),第三個參數為數組長度# zeros()         根據指定形狀和dtype建立全0數組# ones()          根據指定形狀和dtype建立全1數組# empty()         根據指定形狀和dtype建立空數組(隨機值)# eye()           根據指定邊長和dtype建立單位矩陣

五、NumPy:索引和切片

# 1、數組和標量之間的運算#     a+1    a*3    1//a    a**0.5# 2、同樣大小數組之間的運算#     a+b    a/b    a**b# 3、數組的索引:#     一維數組:a[5]#     多維陣列:#         列表式寫法:a[2][3]#         新式寫法:a[2,3] (推薦)#    數組的切片:#         一維數組:a[5:8]    a[4:]        a[2:10] = 1#         多維陣列:a[1:2, 3:4]    a[:,3:5]        a[:,1]# 4、強調:與列表不同,數組切片時並不會自動複製,在切片數組上的修改會影響原數組。    【解決方案:copy()】

六、NumPy:布爾型索引

問題:給一個數組,選出數組中所有大於5的數。  答案:a[a>5]  原理:    a>5會對a中的每一個元素進行判斷,返回一個布爾數組    布爾型索引:將同樣大小的布爾數組傳進索引,會返回一個由所有True對應位置的元素的數組問題2:給一個數組,選出數組中所有大於5的偶數。問題3:給一個數組,選出數組中所有大於5的數和偶數。  答案:     a[(a>5) & (a%2==0)]     a[(a>5) | (a%2==0)]# import numpy as np# a = np.array([1,2,3,4,5,4,7,8,9,10])# a[a>5&(a%2==0)]  #注意加括弧,不叫括弧錯誤,如下# 輸出:array([ 1,  2,  3,  4,  5,  4,  7,  8,  9, 10])# a[(a>5)&(a%2==0)]# 輸出:array([ 8, 10])

七、NumPy:花式索引*

問題1:對於一個數組,選出其第1,3,4,6,7個元素,組成新的二維數組。答案:a[[1,3,4,6,7]]問題2:對一個二維數組,選出其第一列和第三列,組成新的二維數組。答案:a[:,[1,3]]

八、NumPy:通用函數
通用函數:能同時對數組中所有元素進行運算的函數

【一元函數】:abs, sqrt, exp, log, ceil, floor, rint, trunc, modf, # numpy.sqrt(array)                   平方根函數   # numpy.exp(array)                    e^array[i]的數組# numpy.abs/fabs(array)               計算絕對值# numpy.square(array)                 計算各元素的平方 等於array**2# numpy.log/log10/log2(array)         計算各元素的各種對數# numpy.sign(array)                   計算各元素加號或減號# numpy.isnan(array)                  計算各元素是否為NaN# numpy.isinf(array)                  計算各元素是否為NaN# numpy.cos/cosh/sin/sinh/tan/tanh(array) 三角函數# numpy.modf(array)                   將array中值得整數和小數分離,作兩個數組返回# numpy.ceil(array)                   向上取整,也就是取比這個數大的整數 # numpy.floor(array)                  向下取整,也就是取比這個數小的整數# numpy.rint(array)                   四捨五入# numpy.trunc(array)                  向0取整 # numpy.cos(array)                       正弦值# numpy.sin(array)                    餘弦值 # numpy.tan(array)                    正切值 【二元函數】:add, substract, multiply, divide, power, mod,# numpy.add(array1,array2)            元素級加法# numpy.subtract(array1,array2)       元素級減法# numpy.multiply(array1,array2)       元素級乘法# numpy.divide(array1,array2)         元素級除法 array1./array2# numpy.power(array1,array2)          元素級指數 array1.^array2# numpy.maximum/minimum(array1,aray2) 元素級最大值# numpy.fmax/fmin(array1,array2)      元素級最大值,忽略NaN# numpy.mod(array1,array2)            元素級求模# numpy.copysign(array1,array2)       將第二個數組中值得符號複製給第一個數組中值# numpy.greater/greater_equal/less/less_equal/equal/not_equal (array1,array2)# 元素級比較運算,產生布爾數組# numpy.logical_end/logical_or/logic_xor(array1,array2)元素級的真值邏輯運算

九、補充知識:浮點數特殊值
1、浮點數:float
2、浮點數有兩個特殊值:
  --nan(Not a Number):不等於任何浮點數(nan != nan)
  --inf(infinity):比任何浮點數都大
  --在資料分析中,nan常被表示為資料缺失值
2、NumPy中建立特殊值:np.nannp.inf
3、在資料分析中,nan常被用作表示資料缺失值
既然nan連自己都不相等,那麼怎麼判斷是不是NAN呢?
用a==a 只要返回False就能判斷

十、NumPy:數學和統計方法

常用函數:# sum    求和# cumsum 求首碼和# mean    求平均數# std    求標準差# var    求方差# min    求最小值# max    求最大值# argmin    求最小值索引# argmax    求最大值索引

十一、NumPy:隨機數產生
隨機數產生函數在np.random子包內

常用函數:# rand    給定形狀產生隨機數組(0到1之間的數)# randint    給定形狀產生隨機整數# choice    給定形狀產生隨機播放# shuffle    與random.shuffle相同# uniform    給定形狀產生隨機數組

 

利用Python進行資料分析:【NumPy】

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.