天天看點

資料分析之numpy子產品

資料分析之numpy子產品

  numpy(numerical python)是python語言的一個擴充程式庫,支援大量的次元數組和矩陣運算,此外也針對數組提供大量的數學函數庫。

  一、建立數組

  1 使用array()建立

import numpy as np
a = np.array([1,2,3,4,5])    #這是一個一維數組
a1 = np.array([[1,4,3],[4,5,6],[7,8,9.5]])    #這是一個二維數組      

  numpy預設數組的所有元素的類型是相同的,如果傳進來的清單包含不同的類型,則自動統一為同一類型,優先級:str>float>int,如圖:

資料分析之numpy子產品

  2 使用np的routines函數建立

  2.1 np.ones(shape,dtype=None,order='C')   

資料分析之numpy子產品

  2.2 np.zeros(shape,stype=None,order='C')   這和ones用法一樣,隻是得到的每個元素為0

  2.3 np.full(shape,fill_value,dtype=None,order='C')  這也一樣,但隻是多了一個fill_value參數,讓我們可以指定填充的值

  2.4 np.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None)

資料分析之numpy子產品

  2.5 np.arange(start,stop,step,dtype=None)

資料分析之numpy子產品

  2.6 np.random.rantdint(low,high=None,size=None,dtype='I')

資料分析之numpy子產品

  2.7 np.random.random(size=None)  得到0到1的随機數,左閉右開

  2.8 np.random.randn(d0,d1,,,,)   标準正太分布

資料分析之numpy子產品

  二、數組的屬性

  shape:形狀   ndim:次元  size:長度  dtype:元素類型,以後在參數中,shape和size用法一樣

資料分析之numpy子產品

  三、索引和切片

  1,索引

  一維索引和清單一樣,多元的就用逗号隔開,分别表示行和列,或者更多。如果是二維的,逗号前面表示行,逗号後面表示列。

資料分析之numpy子產品
但如果要取第一行,就不用寫逗号,直接在中括号裡寫上索引就行,取第一行和第三行,就在中括号裡放一個中括号,在裡面的中括号裡放1和3。
arry1[1]    arry1[[1,3]]
如果要取第一列,就在逗号前面寫冒号,逗号後面寫索引,取多列時,就把逗号後面寫上中括号,再在中括号裡寫索引
arry1[:,1]    arry1[:,[2,3]]
如果要取多行多列,可以這樣寫:
arry1[[2,3],[2,3]]      

  2,切片

  一維切片和清單一樣,多元切片就和多元索引差不多,也是用逗号隔開

資料分析之numpy子產品

  這是切的第1至2行的第1至2列

  還可以将資料倒置,用'::-1'

arry1[::-1]     将行倒置
arry1[:,::-1]   将列倒置
arry1[::-1,::-1]    将行和列都倒置      
資料分析之numpy子產品

  四、變形

  使用reshape()函數,參數是一個元祖,可以把一個數組的次元進行切換。arry1是一個5*5的二維數組,arry2=arry1.reshape((25))就變成了一個一維的數組,然後再通過arry2.reshape((5,5))又變成一個二維數組了,但整個變形過程中必須保證size是能對上的

   五、圖檔倒置

  我們要用到matplotlib.pyplot子產品,它可以幫我們把圖檔轉換成數組,然後把數組用圖檔展示出來;還要用到資料倒置的方法。

資料分析之numpy子產品
資料分析之numpy子產品

  六、級聯(np.concatedate())

concatenate()axis=0 縱軸 axis=1 橫軸
當縱軸級聯時,兩個數組的列必須相同,當橫軸級聯時,兩個數組的行必須相同
次元必須相同      
資料分析之numpy子產品

  利用級聯我們就可以做九宮格圖檔:

資料分析之numpy子產品
級聯還有兩種方法:
np.hstack()  axis=1,隻能縱向
np.vstack()  axis=0,隻能橫向      

  七、切分

np.split() 第一個參數為數組,第二個參數為切分點,為元祖,第三個參數是切分方向
np.vsplit()
np.hsplit()      
資料分析之numpy子產品

  切分圖檔,就上面的貓的圖檔:

資料分析之numpy子產品

  八、副本

  在第數組進行指派操作時,就會改變數組的值,但我們又不希望改變原數組的值(因為後面還會用到原數組),此時我們就需要複制一個原數組的資料,然後對複制的數組進行指派操作。

資料分析之numpy子產品

  九、聚合操作

Function Name    NaN-safe Version    Description
np.sum    np.nansum    Compute sum of elements     求和
np.prod    np.nanprod    Compute product of elements
np.mean    np.nanmean    Compute mean of elements   求平均值
np.std    np.nanstd    Compute standard deviation
np.var    np.nanvar    Compute variance
np.min    np.nanmin    Find minimum value
np.max    np.nanmax    Find maximum value
np.argmin    np.nanargmin    Find index of minimum value
np.argmax    np.nanargmax    Find index of maximum value
np.median    np.nanmedian    Compute median of elements
np.percentile    np.nanpercentile    Compute rank-based statistics of elements
np.any    N/A    Evaluate whether any elements are true
np.all    N/A    Evaluate whether all elements are true
np.power 幂運算      

  如求和操作:

資料分析之numpy子產品

  十、廣播機制

重要】ndarray廣播機制的三條規則:缺失次元的數組将次元補充為進行運算的數組的次元。缺失的數組元素使用已有元素進行補充。
規則一:為缺失的次元補1(進行運算的兩個數組之間的次元隻能相差一個次元)
規則二:缺失元素用已有值填充
規則三:缺失次元的數組隻能有一行或者一列      
資料分析之numpy子產品

  十一、快速排序

np.sort()與ndarray.sort()都可以,但有差別:
np.sort()不改變輸入
ndarray.sort()本地處理,不占用空間,但改變輸入      
資料分析之numpy子產品

發表于 2019-02-18 10:22 W的一天 閱讀(...) 評論(...) 編輯 收藏

重新整理評論重新整理頁面傳回頂部