[关闭]
@BruceWang 2018-01-03T17:58:59.000000Z 字数 1485 阅读 1296

Numpy pandas matplot 笔记for linear equation

NumpyPandasMatplot

在MATLAB中,* 表示 矩阵乘法, numpy要用dot来实现

  1. import numpy as np
  1. x = np.array([[1.,3.,4.], [4., 6., 4.,]])
  2. y = np.array([[2., 34.], [3, -1], [8, 9]])
  1. x
array([[ 1.,  3.,  4.],
       [ 4.,  6.,  4.]])
  1. y
array([[  2.,  34.],
       [  3.,  -1.],
       [  8.,   9.]])
  1. x.dot(y) #等价于 np.dot(x,y)
array([[  43.,   67.],
       [  58.,  166.]])
  1. np.dot(x,y)
array([[  43.,   67.],
       [  58.,  166.]])
  1. np.dot(x, np.ones(3))
array([  8.,  14.])

我是分割线---------------

np.linalg 能用来做矩阵分解, 以及比如转置和求秩的事儿:

  1. from numpy.linalg import inv, qr
  1. x = np.random.randn(5,5)
  2. x
array([[-0.25604936, -0.37046846, -0.31466935,  0.32535943, -1.61892552],
       [ 1.60670687,  0.66499406, -1.0295848 ,  1.63642336,  1.04195686],
       [-0.74594367, -1.69804565,  0.11274666,  0.06128499, -1.04758812],
       [-1.59361246, -1.1524569 , -0.11915486,  1.17406321,  0.81504085],
       [ 0.50660175, -0.84230231, -0.25309318, -0.41806509, -1.68770548]])
  1. mat = x.T.dot(x)
  2. np.round(mat, 2) # 这里round指的是取小数点后几位,2就是取第二位
array([[ 6.  ,  3.84, -1.6 ,  0.42,  0.72],
       [ 3.84,  5.5 , -0.41, -0.14,  3.55],
       [-1.6 , -0.41,  1.25, -1.81, -0.35],
       [ 0.42, -0.14, -1.81,  4.34,  2.78],
       [ 0.72,  3.55, -0.35,  2.78,  8.32]])
  1. np.round(inv(mat), 2)
array([[  2.94,  -0.32,  10.36,   4.87,  -1.31],
       [ -0.32,   0.79,   0.65,   0.65,  -0.5 ],
       [ 10.36,   0.65,  43.17,  21.17,  -6.41],
       [  4.87,   0.65,  21.17,  10.81,  -3.41],
       [ -1.31,  -0.5 ,  -6.41,  -3.41,   1.31]])
  1. np.round(mat.dot(inv(mat)), 2) # 结果应该是1
array([[ 1.,  0.,  0.,  0.,  0.],
       [ 0.,  1.,  0.,  0.,  0.],
       [-0.,  0.,  1.,  0.,  0.],
       [-0., -0., -0.,  1.,  0.],
       [ 0., -0.,  0.,  0.,  1.]])
  1. q, r = qr(mat) # qr 计算的是QR decomposition
  1. np.round(r,2) # numpy.linalg 更多用法查源文件
array([[-7.35, -6.44,  1.93, -1.18, -3.49],
       [ 0.  , -4.05, -0.62, -0.81, -7.21],
       [ 0.  ,  0.  , -1.9 ,  5.25,  4.62],
       [ 0.  ,  0.  ,  0.  ,  0.66,  2.16],
       [ 0.  ,  0.  ,  0.  ,  0.  , -0.13]])
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注