數據分析之Numpy-數組計算

引言 : python

  數據分析 : 就是把隱藏在一些看似雜亂無章的數據背後的信息提煉出來,總結出研究對象的內在規律 . 數組

  數據分析三劍客 : Numpy   數組計算dom

           Pandas   表計算與數據分析ide

           Matplotlib   繪圖和可視化函數

一 . NumPy 

1 . NumPy(Numerical Python) 是 python 語言的一個擴展程序庫,支持大量的維度數組與矩陣運算 , 此外也針對數組運算提供大量的數學函數庫工具

2 . NumPy是高性能科學計算和分析的性能

    • ndarray : 一個多維數組結構,高效且節省空間
    • 無需循環對總體數據進行快速運算的科學函數
    • * 讀寫磁盤數據的工具以及用於操做內存映射文件的工具
    • * 線性代數 , 隨機數生成和博裏葉變換功能
    • * 用於集成C , C++ 等代碼的工具

3 . 安裝方法 : spa

  pip install numpy 3d

二 . 建立ndarray  

  注意 : 示例均是在jupyter上演示的code

 1 . 使用 np.array() 建立

# 導包
# 一般都將 numpy簡化成np
import numpy as np  

   1) . 一維數組的建立 

np.array([1,2,3,4.5])

  2) . 二維數組的建立   np.array([[1,2,3,4],[5,6,7,8]])

注意 : 

  • numpy默認ndarray的全部元素的類型是相同的
  • 若是傳進來的列表中包含不一樣的類型,則統一爲同一類型,優先級:str>float>int

     

  3) . 使用matplotlib.pyplot獲取一個numpy數組,數據來源於圖片

 

2 . 使用 np 的 routines 函數建立 

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

    例如 : 

 

三 . ndrray---多維數組對象   

 1 . 經常使用屬性 : 

  • T 數組的轉置(對高維數組而言)
  • dtype 數組元素的數據類型
  • size 數組元素的個數
  • ndim 數組的維數
  • shape 數組的維度大小(以元組形式)

2 . 經常使用方法 : 

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.) )     對於高維數組,轉置須要一個由軸編號組成的元組

 

四 . ndarray的基本操做   

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()】

 1 . 索引  

      一維與列表徹底一致 , 多維同理

 

2 . 切片

    1) .  一維與列表徹底相同 , 多維同理

 

    2) . 將數據進行反轉 , 例如 : [1,2,3] --> [3,2,1]

   3) . 對圖片進行操做

   

 

3 . 變形  

  使用 reshape()函數,注意一個參數是 --- tuple ! 

4 . 級聯 

  np.concatenate() 

 

 

級聯須要注意的點:

  • 級聯的參數是列表:必定要加中括號或小括號
  • 維度必須相同
  • 形狀相符:在維度保持一致的前提下,若是進行橫向(axis=1)級聯,必須保證進行級聯的數組行數保持一致。若是進行縱向(axis=0)級聯,必須保證進行級聯的數組列數保持一致。
  • 可經過axis參數改變級聯的方向

5 . 切割

  給圖片進行切割 

原圖片 : 

 

五 . 數學和統計方法  

經常使用函數:

    sum    求和
    cumsum 求前綴和
    mean    求平均數
    std    求標準差
    var    求方差
    min    求最小值
    max    求最大值
    argmin    求最小值索引
    argmax    求最大值索引

 

 

六 . ndarray的排序  

 np.sort() 和 ndarray.sort() 的區別 : 

  • np.sort()  不改變輸入
  • ndarray.sort()  本地處理,不佔用空間,但改輸入

 

 

 

七 . 隨機數生成  

隨機數生成函數在np.random子包內
經常使用函數 : 

    • rand 給定形狀產生隨機數組(0到1之間的數)
    • randint 給定形狀產生隨機整數
    • choice 給定形狀產生隨機選擇
    • shuffle 與random.shuffle相同
    • uniform 給定形狀產生隨機數組
相關文章
相關標籤/搜索