1. 程式人生 > >資料分析之numpy常用知識點、難點梳理

資料分析之numpy常用知識點、難點梳理

一、與random有關的一些函式的區別,首先匯入numpy
	import numpy as np
  1. np.random.randint(low, high=None, size=None, dtype=‘l’)
    從low到high的範圍隨機取整數填充多維陣列, size用於指定陣列的形狀,dtype預設為長整型
  2. np.random.random(size=None)
    函式隨機生成0到1的隨機數 [0,1) 填充陣列,size指定多維陣列的形狀
  3. np.random.randn(d0, d1, …, dn)
    產生以0為中心 方差為1 的 標準正太分佈 的隨機數 填充陣列, 傳入幾個引數,就建立幾維陣列
  4. np.random.normal(loc=0.0, scale=1.0, size=None)
    normal是可以指定中心和方差的一般正態分佈
    loc 指明 正態分佈的中心
    scale 指明正態分佈的變化範圍
  5. np.arange([start, ]stop, [step, ]dtype=None)
    從start,到end,每隔step取一個值,放入陣列
    step為幾就隔幾個取一個值,預設為1
    start和step可以省略
二、numpy整數陣列形式的索引與切片
nd = np.random.randint(0,10,size=(5,6))
nd
array([[1, 2, 1, 9, 4, 0],
       [0, 3, 4, 6, 6, 5],
       [4, 3, 6, 4, 3, 4],
       [7, 9, 6, 5, 9, 9],
       [8, 5, 7, 1, 0, 7]])

順序任意 可以正向取 也可以反向取 可以任意取 而且可以重複取

nd[[1,2],1]
array([3, 3])
nd[-1,[0,2,4]]
array([8, 7, 0])
nd[-1,[2,4,0,0,0,0]]
array([7, 0, 8, 8, 8, 8])
nd[[2,4],[1,3]]
array([3, 1])

切片是 從外往裡 一級一級切

nd[:,0:2]
array([[1, 2],
       [0, 3],
       [4, 3],
       [7, 9],
       [8, 5]])
nd[1:3,1:-1]
array([[3, 4, 6, 6],
       [3, 6, 4, 3]])
三、numpy級聯

np.concatenate((a1, a2, …), axis=0, out=None)
axis引數改變連結的方向, 預設為0,即縱向拼接

nd = np.random.randint(0,10,size=(4,5))  
nd
array([[9, 6, 6, 7, 0],
       [3, 2, 7, 5, 6],
       [1, 8, 5, 9, 9],
       [9, 6, 4, 0, 3]])
np.concatenate((nd,nd),axis=0)  #  或者np.concatenate((nd,nd),axis=-2)
array([[9, 6, 6, 7, 0],
       [3, 2, 7, 5, 6],
       [1, 8, 5, 9, 9],
       [9, 6, 4, 0, 3],
       [9, 6, 6, 7, 0],
       [3, 2, 7, 5, 6],
       [1, 8, 5, 9, 9],
       [9, 6, 4, 0, 3]])
 np.concatenate((nd,nd),axis=1)  # 或者np.concatenate((nd,nd),axis=-1)
 array([[9, 6, 6, 7, 0, 9, 6, 6, 7, 0],
       [3, 2, 7, 5, 6, 3, 2, 7, 5, 6],
       [1, 8, 5, 9, 9, 1, 8, 5, 9, 9],
       [9, 6, 4, 0, 3, 9, 6, 4, 0, 3]])
四、ndarry的聚合操作
  1. 只要有ture就返回true
    np.any(nd,axis=0)

  2. 是否都是True
    np.all(nd,axis=0)

  3. np.argwhere()

    # 使用argwhere 可以按照值去找 元素的索引 # 使用argwhere 可以按照		      值去找 元素的索引
    np.argwhere(nd==9)
    # np.argwhere(nd==1)
    # np.argwhere(nd>6)
    # argwhere本身是用來找 值不是0的元素的索引的
    nd
    array([[9, 2, 2],
           [7, 7, 0],
           [1, 4, 6]])
    nd=9
    array([[ True, False, False],
    	   [False, False, False],
    	   [False, False, False]])
    
五、廣播機制

對應項相加,不足的部分自動補全

m = np.ones((2, 3))
m
array([[1., 1., 1.],
       [1., 1., 1.]])

a = np.arange(1,4,1) 
a
array([1, 2, 3])

m + a
array([[2., 3., 4.],
       [2., 3., 4.]])