欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

机器学习基础(二)之numpy基础

程序员文章站 2022-03-09 10:07:06
...

                                         numpy基础

‘’‘
    numpy初始化
’‘’

import numpy as np   //引用anaconda python中的numpy

X = np.arange(10)    //用numpy创建一个一维数组

X = array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) //运行结果


‘’‘
   #reshape 对数组进行重塑
’‘’

x = np.arange(15).reshape(3,5)  //塑造成3行5列

x = array([[ 0,  1,  2,  3,  4],
           [ 5,  6,  7,  8,  9],
           [10, 11, 12, 13, 14]])

‘’‘
  #切片,对python中的列表进行切片处理,对于二维一样
’‘’

X = np.arange(10)

X[::-1]  //从逆序派过来

array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])

X[:3] //获取下标0-2的元素,左闭右开

array([0, 1, 2])

‘’‘
  #np中矩阵的连接方法
’‘’
x = np.arange(15).reshape(3,5)  

x = array([[ 0,  1,  2,  3,  4],
           [ 5,  6,  7,  8,  9],
           [10, 11, 12, 13, 14]])

#concatenate:

np.concatenate([x,x])   //两个矩阵相叠

array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])

#vstack :垂直方向相叠

#hstack :水平方向相叠,这两个可以自行体会一下

‘’‘
  #np中矩阵的分割方法
’‘’

x = np.arange(0,15)

x1,x2,x3 = np.split(x,[3,7])  //注意此时需要用np.split(矩阵名,列表)二不能用 x.split来做,并且此时分为三部分

x = x.reshape([3,5])

x = array([[ 0,  1,  2,  3,  4],
           [ 5,  6,  7,  8,  9],
           [10, 11, 12, 13, 14]])

#相对应于连接,也有vsplit和hsplit

upper,lower = np.vsplit(x,[2])

left,right = np.hsplit(x,[2])

‘’‘
  #np中矩阵的运算
’‘’

#支持 * + 并且与python中的有所区别

python:n = 10
        L = [i for i in range(n)]
        L*2 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

np:    L = np.arange(1,16).reshape(3,5)
        L*2 = array([[ 2,  4,  6,  8, 10],
                 [12, 14, 16, 18, 20],
                 [22, 24, 26, 28, 30]]) //直接乘以两倍

#dot(两个矩阵相乘)
#np.linalg.inv() (求某个矩阵的逆矩阵)
#np.sim() (求和操作)
#mean(),median(),max(),min() 统计学基础上有
#

‘’‘
  #np中的arg,就是求索引index的值
’‘’
L = np.random.random(10)
L = array([0.35656266, 0.92360074, 0.05858776, 0.54221545, 0.06105745,
           0.71913071, 0.77703987, 0.91120598, 0.48754257, 0.16783168])
np.argmin(L)  得出2,对应下标是最小值

#axis = 0 对应按行 axis = 1 按列

‘’‘
  #np中的fancy indexing
’‘’

X = np.arange(16)

ind = [3,5,8]
X[ind]        相应得出array([3, 5, 8])

x = X.reshape(4,-1)  //reshape(4【代表几行】,-1【代表分4行,自动分为几列】)
x = array([[ 0,  1,  2,  3],
           [ 4,  5,  6,  7],
           [ 8,  9, 10, 11],
           [12, 13, 14, 15]])

row = np.array([1,3,2]) //想对应行的下标
col = np.array([2,1,3]) //想对应列的下标
x[row,col] = array([ 6, 13, 11])

#注意,python也支持[True,False]这中bool的元素
#注意,而且比较的结果也全是bool值,可以自行体会一下