zoukankan      html  css  js  c++  java
  • numpy

    numpy元素的属性

    numpy的所有值都有以下几个属性

    A = np.arange(12).reshape(3, 4).astype(np.float32)
    
    print(A.ndim)
    print(A.shape)
    print(A.size)
    print(A.dtype)
    print(A.itemsize)
    
    # 输出结果为
    # 2
    # (3, 4)
    # 12
    # float32
    # 4
    

    A.ndim
    数组轴的个数,在python的世界中,轴的个数被称作秩

    A.shape
    数组的维度。

    A.size
    数组元素的总个数。

    A.dtype
    元素的数据类型。

    A.itemsize
    数组中每个元素的字节大小。

    生成数列

    指定值的增量

    data = np.arange(10, 30, 5)
    print(data)  # [10 15 20 25]
    

    指定值的个数

    data = np.linspace(1, 10, 5)
    print(data) # [  1.     3.25   5.5    7.75  10.  ]
    

    生成矩阵

    data = np.array([[2, 3, 4], [4, 5, 6]], dtype=np.float32)
    print(data)
    # [[ 2.  3.  4.]
    #  [ 4.  5.  6.]]
    

    生成全是0的矩阵

    data = np.zeros((3, 4))
    print(data)
    # [[ 0.  0.  0.  0.]
    #  [ 0.  0.  0.  0.]
    #  [ 0.  0.  0.  0.]]
    

    生成全是1的矩阵

    data = np.ones((3, 4))
    print(data)
    # [[ 1.  1.  1.  1.]
    #  [ 1.  1.  1.  1.]
    #  [ 1.  1.  1.  1.]]
    

    生成随机数据

    随机生成0~1之间的数

    data = np.random.random()
    print(data) #0.01447623686510957
    

    随机生成指定范围内的浮点数

    data = np.random.uniform(10,20)
    print(data)
    # 14.646829941471552
    

    随机整数

    data = np.random.randint(10,20)
    print(data)
    # 17
    

    随机生成一个矩阵

    data = np.random.random((3,4))
    print(data)
    # [[ 0.77829489  0.63959774  0.83723733  0.95292845]
    #  [ 0.78949057  0.38655045  0.79205805  0.06847395]
    #  [ 0.5284635   0.95181041  0.39267602  0.23638718]]
    

    多维矩阵

    data = np.random.random((2,3,4))
    print(data)
    # [[[ 0.36605927  0.47719931  0.16654015  0.17585629]
    #   [ 0.66085507  0.09883734  0.22603851  0.91388161]
    #   [ 0.33416014  0.82187631  0.91063299  0.25781208]]
    # 
    #  [[ 0.56585862  0.09606677  0.84916434  0.26007262]
    #   [ 0.16145394  0.61120144  0.75447741  0.40179179]
    #   [ 0.55887648  0.45416114  0.17644248  0.43142769]]]
    

    合并

    A = np.array([1, 1, 1])
    B = np.array([2, 2, 2])
    #纵向合并
    print(np.vstack((A, B)))
    #横向合并
    print(np.hstack((A, B)))
    # [[1 1 1]
    #  [2 2 2]]
    #
    # [1 1 1 2 2 2]
    

    增加维度

    添加一个横向的维度

    A = np.array([1, 1, 1])
    B = A[np.newaxis, :]
    print(A.shape)
    print(B.shape)
    print(B)
    # (3,)
    # (1, 3)
    # [[1 1 1]]
    

    添加一个纵向的维度

    A = np.array([1, 1, 1])
    B = A[:,np.newaxis]
    print(A.shape)
    print(B.shape)
    print(B)
    # (3,)
    # (3, 1)
    # [[1]
    #  [1]
    #  [1]]
    

    分割

    A = np.arange(12).reshape(3, 4)
    print(A)
    #横向分割
    print(np.vsplit(A, 3))
    #纵向分割
    print(np.hsplit(A, 2))
    #可以在参数中指定分割哪个坐标
    print(np.split(A, 3, axis=0))
    print(np.split(A, 2, axis=1))
    #不等量分割
    print(np.array_split(A, 3, axis=1))
    

    深层拷贝

    在numpy中直接用"="号赋值,相当于赋予的是指针,赋值前后的"两个"变量是同"一个"变量.比如,下面的变量a,b,改变a,b也会跟着变化.

    a = np.array([1, 2, 3])
    b = a
    a[0] = 666
    print(a)
    print(b)
    #[666   2   3]
    #[666   2   3]
    

    如果想要两个变量不关联,需要这样拷贝

    b = a.copy()
    

    运算

    numpy中矩阵的加法减法的运算和普通的加减运算相同,但是矩阵乘法的运算需要用dot函数,如下

    A = np.array([[2, 3],
                  [4, 7]])
    B = np.array([[1, 2],
                  [3, 4]])
    print(A + B)
    print(A - B)
    print(np.dot(A, B))
    
    # [[ 3  5]
    #  [ 7 11]]
    #
    # [[1 1]
    #  [1 3]]
    #
    # [[11 16]
    #  [25 36]]
    

    索引与切片

    numpy中的索引与切片功能比python中的切片更加强大

    索引多维数组

    data = np.random.random((3,4,5))
    print(data[0,2,3])
    
     
    TIM截图20171127115021.png

    索引多维数组的时候也可以用切片

    data = np.random.random((3,4,5))
    print(data[1,:,3])
    print(data[:2,:,3])
  • 相关阅读:
    对 getaddrinfo Android 返回错误 EAI_BADFLAGS
    getaddrinfo详解
    使用moment.js管理时间
    ejs循环实例
    Express优化-合并路由
    Express重定向
    Express中间件
    express.Router创建模块化路由
    Express路由
    nodejs + express访问静态资源
  • 原文地址:https://www.cnblogs.com/xuecaichang/p/10624106.html
Copyright © 2011-2022 走看看