• numpy创建array【老鱼学numpy】


    在上一篇文章中,我们已经看到了如何通过numpy创建numpy中的数组,这里再重复一下:

    import numpy as np
    # 数组
    a = [[1, 2, 3], [4, 5, 6]]
    print("a:", a)
    
    # 矩阵
    b = np.array(a)
    print("b:", b)
    

    执行后输出为:

    a: [[1, 2, 3], [4, 5, 6]]
    b: [[1 2 3]
     [4 5 6]]
    

    我们可以看到python中的数组和numpy中的数组在屏幕上输出的一些细微的差异:
    numpy中的数组输出中是按照行列排列的,并且元素之后是没有逗号分隔的,这样在屏幕输出上我们就能很容易看矩阵,跟数学中矩阵的书写格式比较接近。

    我们也可以在创建numpy数组时通过设置dtype来指定数组中元素的类型,例如:

    import numpy as np
    # python数组
    a = [[1, 2, 3], [4, 5, 6]]
    print("a:", a)
    
    # numpy数组
    b = np.array(a, dtype=np.float)
    print("b:", b)
    

    上面我们就定义了numpy数组元素的类型为float类型,其输出为:

    a: [[1, 2, 3], [4, 5, 6]]
    b: [[ 1.  2.  3.]
     [ 4.  5.  6.]]
    

    在机器学习中,一般我们定义的元素类型为浮点类型np.float和整型np.int。

    全0矩阵

    想要输出3行4列全部为0的numpy二维数组:

    import numpy as np
    a = np.zeros((3,4))
    print(a)
    

    输出为:

    [[ 0.  0.  0.  0.]
     [ 0.  0.  0.  0.]
     [ 0.  0.  0.  0.]]
    

    全1数组

    我们也经常会用到全1的数组:

    import numpy as np
    a = np.ones((3, 4), dtype=np.float)
    print(a)
    

    输出为:

    [[ 1.  1.  1.  1.]
     [ 1.  1.  1.  1.]
     [ 1.  1.  1.  1.]]
    

    有人可能会注意到定义几行几列的方法,例如(3, 4),这个是python中的元组类型,本质上就是一个数组,但跟数组不一样的地方是其值是只读的,也就是不可改变元组中元素的值。

    生成接近于0的数组

    import numpy as np
    a = np.empty((3, 4), np.float)
    print(a)
    

    输出为:

    [[  6.23042070e-307   3.56043053e-307   1.37961641e-306   2.22518251e-306]
     [  1.33511969e-306   1.24610383e-306   1.69118108e-306   8.06632139e-308]
     [  1.20160711e-306   1.69119330e-306   1.29062229e-306   1.29060531e-306]]
    

    np.empty()用于生成接近于0的随机数数组。

    生成有序的数列或数组

    例如:生成一个从10开始到20结束(不包括结束值),步长为2的数列:

    import numpy as np
    a = np.arange(10, 20, 2)
    print(a)
    

    输出为:

    [10 12 14 16 18]
    

    np.arange()还是经常会用到的,看到这个函数,使我联想起python中的range函数,这两者的功能类似,先看个例子:

    import numpy as np
    # python中创建range对象,然后我们把它转换成list对象并打印出来
    a = range(10, 20, 2)
    print("python中的range对象:", list(a))
    
    # numpy中的arange函数跟python中的range对象类似
    b = np.arange(10, 20, 2)
    print("numpy中的arange:", b)
    

    输出为:

    python中的range对象: [10, 12, 14, 16, 18]
    numpy中的arange: [10 12 14 16 18]
    

    这里arange可以记忆为array中的range函数。

    改变数组形状

    numpy数组的形状非常重要,也就是几行几列。
    在进行数组/矩阵运算中要时刻关注数组/矩阵是什么样的形状,比如数组/矩阵的加法、数组/矩阵的叉乘中对其形状都有相应较严格的规定。
    有时为了能够改变数组/矩阵的形状,就需要调用np.reshape()的函数。
    例如:

    import numpy as np
    a = np.arange(12).reshape(3, 4)
    print(a)
    

    输出为:

    [[ 0  1  2  3]
     [ 4  5  6  7]
     [ 8  9 10 11]]
    

    生成线段

    import numpy as np
    a = np.linspace(1, 10, 20)
    print(a)
    

    输出为:

    [  1.           1.47368421   1.94736842   2.42105263   2.89473684
       3.36842105   3.84210526   4.31578947   4.78947368   5.26315789
       5.73684211   6.21052632   6.68421053   7.15789474   7.63157895
       8.10526316   8.57894737   9.05263158   9.52631579  10.        ]
    

    上述语句生成了从1开始到10,总共有20个数等距的数列。
    你可以把它们想象成起始是1,终止是10,总共有20个等距点。

  • 相关阅读:
    C# a == b ? c :d 表示的意思
    Unity脚本的生命周期 同一脚本/不同脚本/游戏对象激没激活/脚本激没激活,几种情况下的Awake,OnEnable,Start的执行顺序
    算法复习之排序
    算法 复习
    第二章 寄存器
    第一章
    机械学习中的正负样本
    linux安装py3.6
    git管理策略
    jenkin报错hudson.plugins.git.GitExcept
  • 原文地址:https://www.cnblogs.com/dreampursuer/p/7816320.html
Copyright © 2020-2023  润新知