zoukankan      html  css  js  c++  java
  • Numpy的小总结

    1.Numpy是什么?

    numpy是Python的一个科学计算库,提供矩阵运算的功能。

    1.1Numpy的导入

    import numpy as np #一般都是用numpy的别名来进行操作

    1.2Numpy的常用函数

    np.array((1.2,2,3,4), dtype=np.int32)

    这里是强制定义了np里面的矩阵数据类型,是让其为int32位,如果其中有小数的,都会转换成整数。

    numpy向量转为矩阵:

    arr1 = np.array([1,2,3,4,5,6,6,6])


    print(arr1.reshape(2,4))


    reshape完之后,就变成矩阵了


    arr1.shape()则显示矩阵的情况,就是是几维矩阵,矩阵的长度如何。

    arr1.dtype显示arr1矩阵的数据的类型,这里上边定义的是int类型的

    import numpy as np
    
    print(np.array((1.2,2,3,4.1), dtype=np.int32))
    
    arr1 = np.array([1,2,3,4,5,6,6,6])
    print(arr1.reshape(2,4))
    print(arr1.dtype)

    np.linspace(1,10,10)

    #起始值为第一个参数,终点值为第二个参数,然后第三个参数是把这个区间的数,分为多少,这里的输出结果是从1到10
    矩阵之间是可以运算的,但是要注意的是什么?就是矩阵的长度得是对应的。比如二维对二维,并且相对应运算行的长度得相同

    import numpy as np
    a = np.array([[1,2,3],[2,3,4]])
    b = np.array([[2,3,4],[2,3,4]])
    print(a -b)
    """结果输出:[[-1 -1 -1]
     [ 0  0  0]]"""

    矩阵点乘

    行乘列得出结果,看输出结果中的9可以看出,是a的第一行乘以b的第一列。

    import numpy as np
    a = np.array([[1,2,3],[2,3,4],[1,1,1]])
    b = np.array([[2,3,4],[2,3,4],[1,1,1]])
    print(np.dot(a,b))
    """输出结果[[ 9 12 15]
     [14 19 24]
     [ 5  7  9]]
    """


    np.floor(矩阵)向下取整,就是传进来的矩阵,如果是3.5,就会变成3这样子

    矩阵.ravel()会变成向量

    import numpy as np
    a = np.array([[1,2,3],[2,3,4],[1,1,1]])
    print(a.ravel())
    """输出结果:[1 2 3 2 3 4 1 1 1]"""

     矩阵拼接

    vstack和hstack,我发现只能凭借相同大小的,就是如果矩阵不等长的话则按照断的来拼接。像矩阵a的第二行,有五个数,但是最终只拼接了三个

    import numpy as np
    a = np.array([[1,2,3],[2,3,4,5,6],[1,1,1]])
    a = np.array([[1,2,3],[2,3,4],[1,1,1]])
    print(np.hstack((a,b)))
    print(np.vstack((a,b)))
    """输出结果:[[1 2 3 2 3 4]
     [2 3 4 2 3 4]
     [1 1 1 1 1 1]]
    [[1 2 3]
     [2 3 4]
     [1 1 1]
     [2 3 4]
     [2 3 4]
     [1 1 1]]"""

    矩阵切分

    按照行来切,这里在第三行和第四行切了,因此,产生了三个矩阵

    a = np.floor(10*np.random.random((2,12))) #按行切
    print(a)
    print(np.hsplit(a,(3,4)))
    """结果:[[ 0.  2.  0.  3.  3.  1.  5.  9.  1.  5.  5.  9.]
     [ 5.  5.  1.  7.  3.  0.  8.  3.  4.  7.  0.  7.]]
    [array([[ 0.,  2.,  0.],
           [ 5.,  5.,  1.]]), array([[ 3.],
           [ 7.]]), array([[ 3.,  1.,  5.,  9.,  1.,  5.,  5.,  9.],
           [ 3.,  0.,  8.,  3.,  4.,  7.,  0.,  7.]])]"""

     按列来分,想切几刀就切几刀,切多少下,只要没超过它的列数,就可以切。

    import numpy as np
    a = np.floor(10*np.random.random((12,2)))
    print(a)
    print(np.vsplit(a,3))
    """运行结果[[ 7.  5.]
     [ 4.  9.]
     [ 9.  9.]
     [ 9.  7.]
     [ 8.  6.]
     [ 4.  4.]
     [ 6.  7.]
     [ 3.  2.]
     [ 8.  1.]
     [ 4.  2.]
     [ 2.  5.]
     [ 0.  0.]]
    [array([[ 7.,  5.],
           [ 4.,  9.],
           [ 9.,  9.],
           [ 9.,  7.]]), array([[ 8.,  6.],
           [ 4.,  4.],
           [ 6.,  7.],
           [ 3.,  2.]]), array([[ 8.,  1.],
           [ 4.,  2.],
           [ 2.,  5.],
           [ 0.,  0.]])]"""

    至于访问切出来的矩阵,很简单,就是参考数组,既然切成了多个矩阵,那就是按照不同的下标来访问咯,比如上边的结果想拿到第一个数组的第一个数字,则只要赋值了之后,用

    赋值的变量[0][0][0]就可以访问到了,注意数组嵌套的情况。

  • 相关阅读:
    接收xml请求流并解析字符串的例子
    通过style来控制隔行显示不同颜色 .
    显示有模式的有页面的弹出窗口 .
    WSDL生成服务端JAVA代码.bat
    web上下文监听器ServletContextListener 例子 .
    使用监听器:定时清除map缓存的key value .
    Timer和TimerTask类 例子 .
    常用的正则表达式
    算法找出数组中出现次数超过一半的数
    C++讨厌的临时变量什么时候产生
  • 原文地址:https://www.cnblogs.com/zhangtaotqy/p/7729594.html
Copyright © 2011-2022 走看看