【儒冠多誤身】Numpy庫知識體系

Numpy個人知識體系

儒冠多誤身
20181202

  • 通用函數ufunc
  • 對ndarray中元素運算的函數

一元函數 unary ufunc

  • 一元ufunc 說明
    np.abs()、np.fbs() 計算整數、浮點數或複數的絕對值。
    對於非複數值,可以使用更快的fbs
    np.sqrt() 計算各元素的平方根:arr ** 0.5
    np.square() 計算各元素的平方:arr ** 2
    np.exp() 計算各元素的指數ex
    np.log()\np.log10\np.log2\np.log1p 分別:自然對數(e爲底數),底數爲10的log,底數爲2的log,log(1+x)
    np.sign() 計算各元素的正負號:1(正數),0(零),-1(負數)
    np.ceil() 向上取整
    np.floor() 向下取整
    np.rint() 四捨五入取整
    np.modf() 小數部分和正數部分以兩個獨立數組返回arr1,arr2 = np.modf(arr3)
    np.isnan() 返回一個布爾型數組:“哪些值是NaN"
    np.isfinite()\np.isinf() 返回布爾型數組:哪些元素是有窮的,哪些元素是無窮的
    np.cos()\np.sin()\np.tan() 普通型三角函數
    np.cosh()\np.sinh()\np.tanh() 雙曲型三角函數
    np.arccos()\np.arcsin()\np.arctan() 反三角函數
    np.arccosh()\np.arcsinh()\np.arctanh() 反三角函數
    np.logical_not() 計算各元素not x的真值
    相當於-arr

二元函數 binary ufunc

  • 二元ufunc 說明
    np.add(arr1,arr2) 將數組對應元素相加
    np.subtract() 從第一個數組中,減去第二個數組中的元素
    np.multiply() 數組元素相乘
    np.divide() 除法
    np.floor_divide() 向下圓整除法(丟棄餘數)
    np.power() 對第一個數組中的元素A,根據第二個數組中相應元素B,計算AB
    np.maximum() 元素級的最大值計算
    np.fmax() 忽略NaN的,元素級的最大值計算
    np.minimum() 元素級的最小值計算
    np.fmin() 忽略NaN的,元素級的最小值計算
    np.mod() 元素級的求模計算(除法的餘數)
    np.copysign() 將第二個數組中的值的符號賦值給第一個數組中的值
    np.greater() 執行元素級的比較>,產生布爾型數組
    np.greater_equal() 執行元素級的比較>=,產生布爾型數組
    np.less() 執行元素級的比較<,產生布爾型數組
    np.less_equal() 執行元素級的比較<=,產生布爾型數組
    np.equal() 執行元素級的比較==,產生布爾型數組
    np.not_equal() 執行元素級的比較!=,產生布爾型數組
    np.logical_and() 執行元素級的真值邏輯元素:& ,且
    np.logical_or() 執行元素級的真值邏輯元素:|,或
    np.logical_xor 執行元素級的真值邏輯元素:^,異或

矢量化三元表達式 np.where(arr1,第二個參數,第三個參數)

  • 第二個和第三個參數不必是數組,可以是標量值

  • 相當於x if condition else y的矢量化版本

  • np.where(arr1>0,1,-1)# 元素>0的返回1,否則返回-1
    
  • 類似於MySQL的控制流函數

  • select education,salary,case education
    		when '大專' then 1
    		when '本科' then 2
    		when '碩士' then 3
    		when '博士' then 4
    		else 0
    		end as tmp
    from demp_table;	
    
    
  • 相當於MySQL的三元表達式

  • select education,if(salary > 9,'優先','等待') as tmp
    from demp_talbe;
    
  • python的三元表達式結果1 if 表達式 else 結果2

  • a = 10
    b = 20
    r = a if a>b else b
    
  • python列表推倒時

  • list1 = [i*i for i in range(2,11,2)]#生成1~10之間的所有偶數
    


統計函數

arr.mean(axis = 1)# 可接受axis參數
np.mean(arr)# 均值

arr.sum(axis = 1)
np.sum(arr)

arr.std(axis = 1)#標準差,通過axis選擇軸
np.std(arr)

arr.var()#方差
np.var(arr)

arr.max(axis = 1)
np.max(arr)

arr.min(axis = 1)
np.min(arr)

arr.argmin()#最小元素的索引
np.argmin(arr)

arr.argmax()#最大元素的索引
np.argmax(arr)
arr.cumsum(0)# 列累加
arr.cumprod(1)# 行累積


創建

從列表、元組創建

np.array(list\tuple,dtype = np.float64)# 從序列創建,並指定每個元素的數據類型

使用numpy函數創建

np.arange(12).reshape(3,4)#返回ndarray取值[0,12),3行4列

np.ones((3,4))# 全1數組,3行4列
np.ones((2,3,4))# 最外層2個元素,每個元素3個維度,每個維度4個元素

np.zeros((3,4))# 全0數組,3行4列

np.full((2,3),val)#生成2行3列的數組 ,值都是val

np.eye(n)# 生成n*n的單位矩陣,對角線元素都是1,其餘都是0

np.ones_like(arr) # 根據arr的形狀,生成全1的ndarray
np.zeros_like(arr) # 根據arr的形狀,生成全0的數組
np.full_like(arr,val) #根據arr的形狀,生成值都爲val的數組

np.linspace(1,10,4) # 包括1和10,等間隔的生成4個元素的數組,浮點數
np.linspace(1,10,4,endpoint = False) #元素10不作爲生成數組的元素

np.concatenate((arr1,arr2)) # 合併數組arr1和arr2

隨機數組

隨機生成

  • np.random.rand(d0,d1,……,dn)

    • 生成[0,1)之間的數據

    • np.random.rand(3,4)
      np.random.rand(2,3,4)#最外層2個元素,每個元素3個維度,每個維度4個元素
      
  • np.random.randn(d0,d1,……,dn)

    • 返回數據,具有 標準正態分佈(高斯分佈)
    • 均值爲1,標準差爲0
  • np.random.randint(low[high,shape,dtype])

    • 返回隨機整數,範圍:[low,high)

    • shape:數組維度

    • dtype:數據類型,默認np.int

    • high不填時,範圍[0,low)

    • np.random.randint(-5,5,size=(2,2))
      np.random.randint(1,5)# 返回1個[1,5)之間的隨機整數
      
  • np.random.seed(s)

    • 使產生的隨機數組不變

    • np.random.seed(1)
      np.random.randint(100,200,(3,4))
      #放在一起,再次調用,產生的隨機數組元素不變
      

隨機排列

  • np.random.shuffle(arr)
    • 根據數組arr的第1軸進行隨機排序
    • 會改變數組arr
  • np.random.permutation(arr)
    • 根據arr的第1軸產生一個新的亂序數組
    • arr不變
  • np.random.choice(arr[,size,replace,p])
    • 從一維數組arr中以概率p抽取元素,形成size形狀的數組
    • replace表示是否可以重用元素
    • p
      • 設置元素被抽取的概率
      • eg,p = arr/np.sum(arr)

隨機分佈

  • np.random.uniform(low,high,size)

    • 產生具有均勻分佈的數組
    • low 起始值
    • high 結束值
    • size 形狀
  • np.random.normal(loc.scale,size)

    • 產生具有正態分佈的數組

    • loc 均值

    • scale 標準差

    • size 形狀

    • np.random.normal(9,2,50)#創建 包含50個元素的數組,且均值9,標準差2
      
  • np.random.poisson(lam.size)

    • 產生泊松分佈的數組
    • lam 隨機事件發生概率
    • size 形狀
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章