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

    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]就可以访问到了,注意数组嵌套的情况。

  • 相关阅读:
    高盛、沃尔玛 题做出来还挂了的吐槽
    amazon师兄debrief
    到所有人家距离之和最短的中点 296. Best Meeting Point
    问问题没人回答的情况怎么办终于有解了
    找名人 277. Find the Celebrity
    数组生存游戏 289. Game of Life
    547. Number of Provinces 省份数量
    428. Serialize and Deserialize Nary Tree 序列化、反序列化n叉树
    alias别名简介和使用
    面试官:线程池执行过程中遇到异常会发生什么,怎样处理? Vincent
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/7729565.html
Copyright © 2011-2022 走看看