• 第四周学习报告


    本周学习

    上周在进行简单的实例编写时,发现了好多问题,最主要的就是我对numpy、pandas、matpolib等库不是特别熟悉,基础不够,于是本周开始重新学习numpy及pandas库

    ”熊猫库“pandas——数据处理

    1、主要的数据类型:ndarra
    2、(由于pandas我没找到合适的数据源来对它进行操作,明天再更,话说不是我懒,没有大量数据pandas的效果出不来好吧QAQ;之前想过用水仙花数据集和波士顿房价数据集,但效果不太顶)

    numpy——矩阵

    1、主要的数据类型:DataFrame
    2、矩阵的直接创建(不常用)
    import numpy
    #通过numpy.array直接创建矩阵
    vec = numpy.array([[1,2,3,4],[2,3,4,5],[4,5,6,8]])
    print(vec)
    print(type(vec))
    
    3、从文件中读取数据(常用)
    world_alcohol = numpy.genfromtxt("world_alcohol.txt")
    
    4、对矩阵的切片或提取
    #对矩阵的切片或整行整列提取;或者将矩阵转化为bool类型的矩阵
    print(vec[:,3])
    print(vec[0:2,0:3])
    print(vec[0,-1])
    print(vec[[1,0],[2,3]])
    print(vec == 5)
    print(3 in vec)
    
    5、如何简单高效地创建一个全零或全一矩阵
    #制造全零或全1的矩阵,dtype规定每一个元素的类型
    zeros = numpy.zeros((4, 8), dtype="int32")
    print(zeros)
    ones = numpy.ones((2,3))
    print(ones)
    
    6、常用的对矩阵的宏观方法以及另一种创建矩阵的高效方法
    #通过numpy.arange创建矩阵,dtype查看元素的类型,ndim查看矩阵维度,min和max方法查找最小和最大的元素
    matrix = numpy.arange(20).reshape(4,5)
    print(matrix)
    print(matrix.dtype)
    print(matrix.ndim)
    print(matrix.min())
    print(matrix.max())
    
    7、对整个矩阵的每个元素分别进行各种三角函数运算,得到一个新的同尺寸矩阵;有一个快速创建矩阵的方法:linspace
    #通过numpy.linspace创建矩阵,在A-B之间均匀取出C个数;numpy.sin对整个矩阵的元素求sin值,cos、tan同理
    from numpy import pi
    matrix2 = numpy.linspace(2, pi, 20).reshape(4, 5)
    print(matrix2)
    print(numpy.sin(matrix2).reshape(4, 5))
    print(numpy.cos(matrix2).reshape(4, 5))
    print(numpy.tan(matrix2).reshape(4, 5))
    
    8、矩阵的相乘和矩阵的点乘
    arr1 = numpy.array([[1,5],[7,2]])
    arr2 = numpy.arange(1,5).reshape(2,2)
    print(arr1)
    print(arr2)
    print(arr1*arr2) #每个元素对应相乘
    print(arr1.dot(arr2))#两种方法实现矩阵相乘
    print(numpy.dot(arr1,arr2))
    
    9、对矩阵的方根运算以及绝对值运算
    a = numpy.arange(1,13).reshape(3,4)
    print(numpy.exp(a))#求e的指数次方
    print(numpy.sqrt(a))#求各元素的平方根
    print(numpy.square(a))#求各元素的平方
    b = numpy.random.randn(16).reshape(4,4)
    print(b.astype(numpy.int32))#利用astype来进行类型转换
    print(numpy.fabs(b))#求绝对值
    
    10、矩阵的对数运算、分别以以e、2、10为底
    #对各个元素求自然对数,以e、2、10为底
    from numpy import e
    c = numpy.linspace(e,e*9,8).reshape(2,4)
    print(numpy.log(c))
    print(numpy.log2(c))
    print(numpy.log10(c))
    
    11、矩阵的四舍五入运算(可指定精确度,即around的第二个参数)以及向上向下取整
    #利用around取整,利用floor向下取整,利用ceil向上取整,类型转换也可用来进行向下取整
    d = numpy.array([[0.547,4.26,11.4,8.9732],[1.8,12.56,3.14,0.4768]])
    print(numpy.around(d))
    print(numpy.around(d,1))
    print(numpy.around(d,-1))
    print(d.astype(numpy.int32))
    print(numpy.floor(d))
    print(numpy.ceil(d))
    
    12、求转置矩阵(话说这个方法名好奇怪,是一个单独的大写字母——T)
    #利用ravel将矩阵转化为向量,T求转置矩阵,使用reshape时可以只指定一个维度,另一个维度填-1,会自动划分
    e = numpy.floor(numpy.random.random((3,4))*20)
    print(e)
    print(numpy.ravel(e))
    print(e.T)
    print(e.reshape(2,-1))
    
    13、矩阵的拼接以及矩阵的拆分
    #矩阵的拼接
    arr1 = numpy.floor(numpy.random.random((2,3))*10)
    arr2 = numpy.floor(numpy.random.random((2,3))*10)
    print(arr1,'
    ',arr2)
    print(numpy.hstack((arr1,arr2)))
    print(numpy.vstack((arr1,arr2)))
    print("------------------------我是分割线------------------------")
    #矩阵的拆分,传单个数字就是平均分成几份,不能均分会报错,传元组就是切割的位置
    vector = numpy.arange(0,12).reshape((2,6))
    print(vector)
    print(numpy.hsplit(vector,(1,)))
    

    话说之前Anaconda自带的jupyter notebook一直被我忽视了,这周发现它竟然意外地好用,一个cell一个cell地run,效率奇高,从而不会被整个代码中的其它的输出干扰,更加方便对于结果的查看,只是jupyter notebook没有自动补齐以及debug的功能

  • 相关阅读:
    python面向对象之类,对象
    面向对象简介
    序列化模块
    sys模块简单使用
    day26作业
    day22
    day21作业
    day21
    day20作业
    day20
  • 原文地址:https://www.cnblogs.com/konelee/p/13463895.html
Copyright © 2020-2023  润新知