矩阵运算及其重要性
所谓的数据处理,其本质大都可以归为矩阵运算。因为需要处理的数据大都是矩阵或向量的形式,因此个人认为一个工具适不适合做数据处理,一个重要的指标的就是支不支持矩阵运算,因为如果没有矩阵运算,循环去处理一大堆数据势必会造成运行过长的问题。而这也是为什么很多人会推荐在使用python处理数据的时候不要用它自带的list,而要用numpy。
用于矩阵运算的numpy库函数
矩阵乘法:
叉乘 | numpy.dot(A, B) |
点乘 | A*B or numpy.multiply(A,B) |
import numpy
A = [[1,2,1],[2,-1,0],[1,1,0]]
B = [[1,2,1],[2,-1,0],[1,1,0]]
C=numpy.dot(A,B)
print(C)

import numpy
A = [[1,2,1],[2,-1,0],[1,1,0]]
B = [[1,2,1],[2,-1,0],[1,1,0]]
C=numpy.multiply(A,B)
print(C)

矩阵转置:.T
import numpy
A = numpy.array([[1,3,1],[2,-1,0],[1,1,0]])
print(A)
print(A.T)

矩阵求逆:np.linalg.inv(A)
import numpy
A = numpy.array([[1,3,1],[2,-1,0],[1,1,0]])
print(A)
print(numpy.linalg.inv(A))

向量合并:
1 | 直接中括号连接或append |
2 | 使用numpy库中的vstack 和hstack 函数 |
import numpy
a = [1,2,1]
b = [0,1,0]
A=numpy.array(a)
B=numpy.array(b)
print(numpy.append(A,B))
print(numpy.array([A,B])

import numpy
a = [1,2,1]
b = [0,1,0]
A=numpy.array(a)
B=numpy.array(b)
print(numpy.hstack((A,B)))
print(numpy.vstack((A,B)))

形状变换:reshape
import numpy as np
s = np.array([1,2,3,4,5,6])
np.reshape(s,(3,2))
s.reshape(2,3)

方阵的行列式和秩:
行列式 | linalg.det |
秩 | linalg.matrix_rank |
import numpy
A = numpy.array([[1,2],[2,3]])
print(numpy.linalg.det(A))

import numpy
A = numpy.array([[1,2],[2,3]])
print(numpy.linalg.matrix_rank(A))

方阵的迹:trace
import numpy
A = numpy.array([[1,2],[2,3]])
print(numpy.trace(A))

解线性方程:linalg.solve
# 对于形式如AX=b的线性方程,使用numpy解方程
import numpy
A=numpy.array([[1,2],[2,3]])
b=numpy.array([[1],[4]])
X=numpy.linalg.solve(A,b)
print(X)
