• python数据分析-numpy数值分析与计算操作


    numpy数值分析与计算操作

    话不多说,上代码吧!

    1.创建数组

    ##创建一维数组
    nd2=np.array([12,25,25,366,54,85,69])#
    print(nd2) #
    #创建二维数组
    nd=np.array([[12,25,34],[34,43,23],[23,34,34]])#
    print(nd)
    

    上述代码即为创建数组的代码,可以创建一维数组,二维数组或者三维数组,看你需要数据的结构而定

    注:np.array函数中有一个参数dtype可以对其进行赋值,来决定数据的类型

    2.得到数组相应的信息

     print(type(nd)) 
     print(nd.shape) 
     arr3=np.array([[1,2],[1,5,2]])
     print(arr3)
     print(arr3.shape)#数组维度
     print("nd维度:",nd.ndim)
     print("nd2维度:",nd2.ndim)
     #元素个数
     print(nd2.size)
     print(nd.size)
     #元素类型
     print(nd2.dtype)
     print(nd.dtype)
    

    上述代码将之前创建的数组信息输出
    分别是
    数组的结构、维度、元素个数、元素类型

    3.重置数组结构

    rnd=np.array(np.random.rand(24))
    print(rnd)
    print(rnd.shape)
    rnd.shape=6,4
    print(rnd)

    上面用到了对数组的shapes重新赋值的方法,就可以对数组的结构重构,重构时要注意结构要对应

    4.使用函数创建数组

    #使用函数创建数组
    print(np.ones(shape=(2,3,6)))
    print(np.zeros(shape=(2,3,6)))
    print(np.full((2,3,6),5)) 
    print(np.eye(6))
    print(np.diag([5,6,47,5,6]))#arange函数 
    ar=np.arange(60).reshape(6,10) 
    print(ar)#linspace#等差数列,返回固定范围固定数量的数组
    ln=np.linspace(1,20,100).reshape(5,20)
    print(ln)#生成随机数
    r1=np.random.random(20)#0-1之间随机数
    print(rl)
    c=np.random.randint(1,50,(8,12))

    上述代码分别用到了几个函数
    np.ones(shape)创建一个全是 1 的结构为shape的数组

    np.zeros(shape)创建一个全是 0 的结构为shape的数组

    np.full((2,3,6),5)创建一个结构为2,3,5数值全为5的数组

    np.eye(6)创建一个6X6的单位矩阵

    np.diag([5,6,47,5,6])创建一个对角矩阵

    np.arange(60) 创建等差数组,默认为1,如np.arange(2,80,5)初始值为2终点为80,差为5
    其他几个上面有注释,同时也与前面说的类似就不解释了

    5.数组索引和数组展平和堆叠

     #二维数组索引
     r=np.random.randint(1,60,(4,6))
     print(r)
     print(r[1:2,3:5])#行列操作
     print(r[::2,::3])
     #变换数组形态
     print(r.flatten())#横向展平    #reshape ,重塑数组维度
     r2=np.random.randint(1,30,(4,6))
     r3=np.hstack((r,r2))#横向堆叠
     
     print(r3)r4=np.vstack((r,r2))#纵向堆叠
     print(r4) 

    上述代码分别对应数组的展平,横向堆叠,纵向堆叠
    数组的索引则为(r[1:2,3:5]
    1:2针对行,3:5针对列,作用形式和常用的range参数作用形式差不多

    重点部分统计分析方法,数值统计

    6.排序

    排序arr2=np.array([0,5,3,4,6,3,4,85,3,5,3,4,5])
    arr2.sort()#无返回值 
    print(arr2)
    arr3=np.array([[45,36,45,32,55,21,54,56],[12,45,3,53,5,863,32,52]])
    arr3.sort()
    print(arr3) 
    arr3.sort(axis=0)
    print(arr3) 
    print(arr2.argsort())

    通过sort对数组排序无返回值,直接在原数组上修改,所以要注意保护数据

    可以通过reverse=True/False传递参数决定是正序排序还是反序排序,True代表正序,False反序,也可能我记错了,你试试就行,哈哈

    arr2.argsort()则是放回排序的下标,也可以指定排序的方式

    7.去重和重复

    #去重
    print(np.unique(arr2)) #重复 
    print(np.tile(arr2,2)) 
    print(np.tile(arr3,2)) 
    #对元素进行重复
    print(arr2.repeat(2,axis=0))
    print(arr3.repeat(2,axis=0))

    np.unique可以对数组去重
    np.title可以对整个对象进行重复
    ndarray对象则可以通过repeat对元素进行重复,axis=0代表列重复,axis=1代表行重复

    重点
    8.统计函数

     #sum函数
     arr_z=np.random.randint(0,8,(6,10))
     print(arr_z)
     print(arr_z.sum())
     print(arr_z.sum(axis=0))#纵向
     print(arr_z.sum(axis=1))
      #mean均值函数 
     print(arr_z.mean())#将近多少? 
     print(arr_z.mean(axis=0))#纵向
     print(arr_z.mean(axis=1)) 
     #标准差 
     print(arr_z.std())#将近多少? 
     print(arr_z.std(axis=0))#纵向 
     print(arr_z.std(axis=1)) 
     #方差 
     print(arr_z.var())#将近多少? 
     print(arr_z.var(axis=0))#纵向 
     print(arr_z.var(axis=1)) 
     #协方差 
     print(arr_z.corrcoef())#将近多少? 
     print(np.corrcoef(arr_z))#纵向 
     print(np.corrcoef(arr_z,axis=0))  
     print(np.cov(arr_z))#行为基准  
     #最大值 
     print(arr_z.max())#将近多少? 
     print(arr_z.max(axis=0))#纵向 
     print(arr_z.max(axis=1))
     #最小值 
     print(arr_z.min())#将近多少? 
     print(arr_z.min(axis=0))#纵向 
     print(arr_z.min(axis=1))
     #最大值索引 
     print(arr_z.argmin())#将近多少? 
     print(arr_z.argmin(axis=0))#纵向 
     print(arr_z.argmin(axis=1))#
     print(arr_z[:,arr_z.argmin(axis=1)]) 
     #累计积 
     print(arr_z.cumprod())#将近多少? 
     print(arr_z.cumprod(axis=0))#纵向 
     print(arr_z.cumprod(axis=1))
     #累积和   
     print(arr_z.cumsum())#将近多少? 
     print(arr_z.cumsum(axis=0))#纵向 
     print(arr_z.cumsum(axis=1))    

    上面用到了很多函数,事实上方法都差不读,当你不对axis传递参数时,函数的作用域时整个数组不论是一维数组还是二维三维数组,
    当传递参数为0时,对于二维数组,以列为基础进行操作,为1时,以行为基础操作

    9.person系数

    np.corrcoef(arr_z)

    使用np.corrcoef(a)可计算行与行之间的相关系数,np.corrcoef(a,rowvar=0)用于计算各列之间的相关系数,输出为相关系数矩阵。

    10.一个简单绘图,构建自己的随机数据

     r1=np.random.random(20)#0-1之间随机数
     print(r1)
     r1=np.sort(r1)
     y1=r1*2+3
     y2=r1*2+3+np.random.uniform(-1,1,20)  plt.figure(figsize=(8,5))
     plt.plot(r1,y1,c='b')
     plt.scatter(r1,y2,c='r',s=5)
     plt.show()

    结构如果所示
    在这里插入图片描述
    通过np.random,我们呢构建随机数

  • 相关阅读:
    FileWatcher
    virtual table(有180个评论)
    this 指针
    docker -ce(社区免费版)
    vue-cli
    CAP理论、BASE理论
    B+树和LSM存储引擎代表树和B-树
    CPU高速缓存
    Python&基础环境搭建
    二叉树
  • 原文地址:https://www.cnblogs.com/gaoxing2580/p/13193452.html
Copyright © 2020-2023  润新知