zoukankan      html  css  js  c++  java
  • 《Python数据分析》笔记2——统计学与线性代数

    统计学与线性代数

    用Numpy进行简单的描述性统计计算

    import numpy as np
    from scipy.stats import scoreatpercentile
    data=np.loadtxt("mdrtb_2012.csv",delimiter=',',usecols=(1,),skiprows=1,uppack=True)
    #加载数据
    
    
    
    
    print("Max method",data.max())
    print("Max function",np.max(data))
    
    
    print("Min method",data.min())
    print("Min function",np.min(data))
    
    
    print("Mean method",data.mean())
    print("Mean function",np.mean(data))
    
    
    print("Std method",data.std())
    print("Std function",np.mean(data))
    
    print("Median",np.median(data))
    print("Score at percentile 50",scoreatpercentile(data,50))

    用Numpy进行线性代数运算

    子程序包numpy.linalg提供了许多线性代数例程,我们可以用它来计算矩阵的逆、计算特征值、求解线性方程或计算行列式。对于Numpy来说,矩阵可以用ndarray的一个子类来表示。

    import numpy as np
    A=np.mat("2 4 6;4 2 6;10 -4 18")
    print("A
    ",A)
    inverse=np.linalg.inv(A)
    print("inverse of A
    ",inverse)

    注意:np.mat的构造

    用Numpy解线性方程组

    矩阵可以通过线性方式把一个向量变换成另一个向量,因此从数值计算的角度看,这种操作对应于一个线性方程组。Numpy.linalg中的solve()子例程可以求解类似Ax=b这种形式的线性方程组,其中A是一个矩阵,b是一维或者二维数组,而x是未知量。

    import numpy as np
    A=np.mat("2 4 6;4 2 6;10 -4 18")
    print("A
    ",A)
    b=np.array([0,8,-9])
    print("b
    ",b)
    #调用solve()函数
    x=np.linalg.solve(A,b)
    print("solution",x)
    #利用dot()函数进行验算
    print("check
    ",np.dot(A,x))


    用Numpy计算特征值和特征向量

    特征值是方程式Ax=ax的标量解,其中A是一个二维矩阵,而x是一维向量。特征向量实际上就是表示特征值的向量。

    可以用子程序包numpy.linalg的eigvals()和eig()函数来获得矩阵的特征值和特征向量,并通过dot()函数来验算结果。

    import numpy as np
    A=np.mat("2 4 6;4 2 6;10 -4 18")
    print("A
    ",A)
    #利用eig()函数计算特征值
    print("Eigenvalues",np.linalg.eigvals(A))
    #利用eig()函数取得特征值和特征向量
    eigenvalues,eigenvectors=np.linalg.eig(A)
    print("First tuple of eig ", eigenvalues)
    print("second tuple of eig",eigenvectors)


    Numpy随机数

    对于Numpy,与随机数有关的函数都在random子程序包中。

    我们既可以生成连续分布的随机数,也可以生成非连续分布的随机数。分布函数有一个可选的size参数,它能通知Numpy要创建多少个数字。我们可以用整型或者元祖来给这个参数赋值,这时会得到相应形状的数组,其值由随机数填充。离散分布包括几何分布、超几何分布和二项式分布。连续分布包括正态分布和对数正态分布。

    用二项分布:np.random.binomial()函数

    用正态分布:np.random.normal()函数

    创建掩码式Numpy数组

    数据常常是凌乱的,并且含有空白项或者无法处理的字符,好在掩码式数组可以忽略残缺的或无效的数据点。numpy.ma子程序包提供的掩码式数组隶属于ndarray,带有一个掩码。

    这里以lena的相片为数据源,假设某些数据已经损坏。下面用掩码处理

    1.创建一个掩码

    为了得到一个掩码式数组,必须规定一个掩码。

    random_mask=np.random.randint(0,2,size=lena.shape)

    2创建一个掩码式数组

    下面应用掩码来创建一个掩码式数组

    masked_array=np.ma.array(lena,mask=random_mask)

  • 相关阅读:
    对<Effective Python: 编写高质量Python代码的59个有效方法>中知识点的总结和扩展
    那些年在使用python过程中踩的一些坑。
    java学习心得——Hutool工具类ExcelUtil
    java学习心得——String对象Replace
    java学习心得——Quartz 自定义定时器的操作
    ThoughtWorks.QRCode 生成二维码名片(实现二维码内容换行)
    这么多年第一次自己去用游标和临时表
    BASE64码转图片
    Sql常用函数
    关于EF查询表里的部分字段
  • 原文地址:https://www.cnblogs.com/yifdu25/p/8393632.html
Copyright © 2011-2022 走看看