• 机器学习入门(三)


    python关于向量

      python中的List 的特点:不限制其中每一个元素的类型,可以使用下标访问,但是比较慢.

      也可以使用array.

      需要import arrary 这个包.

    import array
    arr=array.array('i',[i for i in range(10)])
    arr
    输出:array('i', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    

    array创建之后其中只能有一种类型,这样array的效率会高一点,但是没有那么灵活.

    如果你具体使用过这个array,也会感觉到有很多不方便的地方.,这个时候我们就会使用numpy.


    numpy的使用.

      引入numpy的这个包:import numpy

      查看numpy的版本:numpy.version

      使用别名:import numpy as np ,这个时候可以用np来代替numpy.

      这个里有个坑点:import numpy as np要在import numpy 之后运行,会出错.

      numpy的操作和python 的array基本上一样.也是可以下标访问,且不支持修改类型.

      dtype方法可以返回array中的类型.

      虽然numpy的array只允许有一种类型,不能修改类型,但是array里面的元素在赋值的时候会有类型的隐式转换,比如小数种截位.

    numpy其他创建numpy.array的方法

    zeros(shape) 创建一个全零矩阵 shape可以传入一个元组的类型.

    np.zeros(shape=(3,5))
    输出:array([[0., 0., 0., 0., 0.],
         [0., 0., 0., 0., 0.],
         [0., 0., 0., 0., 0.]])
    

    可以看到全部都是浮点型,numpy默认都是使用浮点型船舰矩阵,当然我们也可以指定它的类型.

    np.zeros(10,dtype=int)
    输出:array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
    

    同样的也可以创建全是1矩阵

    np.ones(3,5)
    输出:
    array([[1., 1., 1., 1., 1.],
           [1., 1., 1., 1., 1.],
           [1., 1., 1., 1., 1.]])
    

    如果创建指定值的可以使用np.full(shape,fill_value)

    np.fill(shape=(3,5),fill_value=5)
    输出:array([[5, 5, 5, 5, 5],
    [5, 5, 5, 5, 5],
    [5, 5, 5, 5, 5]])
    

    如果具体写出了参数名称,那么参数顺序可以不按照定义顺序.

    arange的使用,在numpy中的类似range生成表达式

    比如python中这样的表达式

    [i for i in range(0,20,2)]
    输出:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
    

    在numpy中可以这样写

    np.arange(0,20,2)
    输出:array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18])
    

    range(0,20,2)的意思是:从0开始,到20之前,不包含20,步长为2的遍历.
    和range不同的是 arange可以传入浮点型.

    np.arange(0,1,0.2)
    输出:array([0. , 0.2, 0.4, 0.6, 0.8])
    

    如果不填写步长,那么步长就会默认是1,如果不填写其实位置,那么默认起始位置是0,这两点和range都一样.

    linspace分割区间,numpy中特有的.

    先看代码:

    np.linspace(0,20,10)
    输出:array([ 0.        ,  2.22222222,  4.44444444,  6.66666667,  8.88888889,
           11.11111111, 13.33333333, 15.55555556, 17.77777778, 20.        ])
    

    含义是从区间[0,20]中登长的截取出10个等间距的点,是包括20的.

    numpy中的random

    从某个范围生成一个数

    np.random.randint(0,10)
    输出:8
    

    从某个范围生成一个向量

    np.random.randint(0,10,10)
    array([2, 3, 0, 8, 3, 7, 2, 4, 7, 2])
    

    需要注意的是randint(,,size)是一个前闭后开的区间,size可以是一个元组.

    通过随机种子生成向量:

    np.random.seed(233)
    np.random.randint(0,10,size=(3,5))
    
    array([[7, 7, 5, 1, 3],
           [5, 1, 3, 4, 7],
           [1, 3, 6, 2, 3]])
    

    可以发现无论生成多少次,生成的矩阵都是一样的.

    生成一个浮点数

    np.random.random()
    

    生成随机浮点向量

    np.random.random(10)
    

    如果需要生成符合正态分布的浮点数,默认均值为0,方差为1的浮点数

    np.random.normal()
    

    往normal中的参数可以修改均值和方差,默认是前两个参数,当然传入第三个参数大小;

    np.random.normal(0,1,3,5)
    array([[-0.10892564,  0.3280622 ,  0.89261728, -0.27398504,  0.8855126 ],
           [ 0.73557401,  1.06942746,  0.20317479, -0.04285664,  0.26786595],
           [ 0.25915147, -1.63612624, -0.01482728, -0.70995326,  0.63002903]])
    

    如果对于某个函数不太熟悉,可以加上?然后回车就可以看到对应的文档.

    np.random.normal?
    
  • 相关阅读:
    关于使用Java Mail进行邮件发送,抛出Could not connect to SMTP host: xx@xxx.com, port: 25的异常可能
    百度地图和solr展示资源和附近等功能的实现 四
    Python爬虫入门-3
    Python爬虫入门-2
    Python爬虫入门-1
    Python装饰器专题-限制函数调用次数(10s调用一次)
    32个Python爬虫项目让你一次吃到撑
    时间复杂度趣图分析
    各类数据库默认端口总结
    ansible使用三(ansible roles)
  • 原文地址:https://www.cnblogs.com/miaoliangJUN/p/12003292.html
Copyright © 2020-2023  润新知