Numpy学习——线性代数、where语句、统计函数

线性代数

Numpy可以用于计算矩阵相乘、分解矩阵、求解线性方程等线性代数问题。*在numpy中表示两个数组的乘积。numpy.linalg模块中会有矩阵计算经常用到的功能,如inv()函数,用于求解矩阵的逆矩阵。

  • 可以使用solve()函数去求解线性方程组

{ x 1 + 2 x 2 = 2 2 x 1 − 2 x 2 = 4 \begin{cases} x_1+2x_2=2\\ 2x_1-2x_2=4 \end{cases} { x1+2x2=22x12x2=4

>>> import numpy.linalg as LA
>>> A = np.array([[1,2],[2,-1]])

>>> B = np.array([2,4])

>>> LA.solve(A,B)
array([2., 0.])
  • 可以使用eig()函数求矩阵的特征值和特征向量

    >>> q = np.diag((4,5,6))
    
    >>> x, y = LA.eig(q)
    
  • mgrid()创建多维网络

    >>> x, y = np.mgrid[0:6*np.pi:0.25, 0:4*np.pi:0.25]
    
    >>> x
    array([[ 0.  ,  0.  ,  0.  , ...,  0.  ,  0.  ,  0.  ],
           [ 0.25,  0.25,  0.25, ...,  0.25,  0.25,  0.25],
           [ 0.5 ,  0.5 ,  0.5 , ...,  0.5 ,  0.5 ,  0.5 ],
           ...,
           [18.25, 18.25, 18.25, ..., 18.25, 18.25, 18.25],
           [18.5 , 18.5 , 18.5 , ..., 18.5 , 18.5 , 18.5 ],
           [18.75, 18.75, 18.75, ..., 18.75, 18.75, 18.75]])
    
    >>> y
    array([[ 0.  ,  0.25,  0.5 , ..., 12.  , 12.25, 12.5 ],
           [ 0.  ,  0.25,  0.5 , ..., 12.  , 12.25, 12.5 ],
           [ 0.  ,  0.25,  0.5 , ..., 12.  , 12.25, 12.5 ],
           ...,
           [ 0.  ,  0.25,  0.5 , ..., 12.  , 12.25, 12.5 ],
           [ 0.  ,  0.25,  0.5 , ..., 12.  , 12.25, 12.5 ],
           [ 0.  ,  0.25,  0.5 , ..., 12.  , 12.25, 12.5 ]])
    
  • where()函数

    where(condition,[x,y])

    >>> a = np.arange(5)
    
    >>> b = np.arange(5,10)
    
    >>> c = np.array([True, False, True, False, True])
    
    >>> d = np.where(c,a,b)
    array([0, 6, 2, 8, 4])
    

    第2、3个数也可以不是数组

    >>> test = np.random.randint(0,20,10)
    
    >>> test
    array([14, 17, 17, 19,  1,  9,  7, 18,  7,  5])
    
    >>> np.where(test > 10, 0, 1)
    array([0, 0, 0, 0, 1, 1, 1, 0, 1, 1])
    
  • 统计函数

    • sum():求整个数组或某轴上的元素的和
    >>> test = np.random.randint(0,20,12).reshape(4,-1)
    
    >>> test
    array([[13,  2,  4],
           [13,  2, 17],
           [ 8,  1, 19],
           [19,  1, 18]])
    
    >>> test.sum()
    117
    
    >>> test.sum(0)
    array([53,  6, 58])
    # 表示列的和
    
    >>> test.sum(1)
    array([19, 32, 28, 38])
    # 表示行的和
    
    • mean():平均值,用法同sum

    • min()、max():大小值,同sum

    • std()、var():标准差方差,同sum

    • argmin()、argmax():最大最小值的索引,同sum

    • cumsum()计算数组元素的累加和

      >>> test.cumsum(axis=0) # 和0是一样的
      array([[13,  2,  4],
             [26,  4, 21],
             [34,  5, 40],
             [53,  6, 58]], dtype=int32)
      

猜你喜欢

转载自blog.csdn.net/m0_50470999/article/details/108534055