本文主要介绍numpy库中的矩阵:
矩阵的创建
语法格式:
numpy.matrix(data,dtype)
data:数据
dtype:数据类型,同数组
如:
m2 = np.matrix([[1,2,3],[4,5,6]])
m2
'''
matrix([[1, 2, 3],
[4, 5, 6]])
'''
数组转矩阵 mat
语法格式:numpy.mat(narray)
narray:数组
如:
from numpy import *
data1 = mat(zeros((3,3)))
data2 = mat(ones((2,4)))
data3 = mat(random.rand(2,2))
data4 = mat(random.randint(2,8,size=(2,5)))
data5 = mat(eye(2,2,dtype=int))
'''
data1
matrix([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])
data2
matrix([[1., 1., 1., 1.],
[1., 1., 1., 1.]])
data3
matrix([[0.67143174, 0.75772619],
[0.15963105, 0.82548702]])
data4
matrix([[5, 4, 7, 2, 5],
[7, 7, 4, 7, 6]])
data5
matrix([[1, 0],
[0, 1]])
'''
常见的矩阵运算
* 、sum、max、min、hstack、vstack、.I
*:矩阵乘积,遵循矩阵乘积规则,支持矩阵与标量相乘
a1 = mat([1,2])
a2 = mat([[1],[2]])
a3 = a1 * a2
print(a3)
'''
matrix([[5]])
'''
print(a1*2)
'''
matrix([[2, 4]])
'''
sum
语法格式:
矩阵名称.sum(axis=某维)
其余维不变,对指定维求和,指定维消失。
不指定维数,表示对矩阵所有元素求和
a1 = np.mat([[1,2],[3,4],[5,6]])
a1.sum(axis=0)
'''
matrix([[ 9, 12]])
'''
a1.sum(axis=1)
'''
matrix([[ 3],
[ 7],
[11]])
'''
a1.sum()
#21
max:求矩阵元素最大值
min:求矩阵元素最小值
如:
a = mat(random.randint(2,8,size=(2,5)))
a
'''
matrix([[6, 7, 6, 2, 7],
[7, 5, 6, 6, 6]])
'''
a.max()
#7
a.min()
#2
hstack:
语法格式:
numpy.hstack(tup)
(a1,a2,...):矩阵
返回结果为numpy的数组,水平(按照列顺序)的把数组给堆叠起来。
vstack:
语法格式:
numpy.vstack(tup)
(a1,a2,...):矩阵
返回结果为numpy的数组,垂直(按照行顺序)的把数组给堆叠起来。
如:
a = mat(ones((2,2)))
b = mat(eye((2)))
c = hstack((a,b))
'''
matrix([[ 1., 1., 1., 0.],
[ 1., 1., 0., 1.]])
'''
d = vstack((a,b))
'''
matrix([[ 1., 1.],
[ 1., 1.],
[ 1., 0.],
[ 0., 1.]])
'''
.I:求矩阵转置
语法格式:矩阵名称.I
如:
a1 = mat(eye(2,2)*0.5)
a2 = a1.I
print(a1)
'''
matrix([[0.5, 0. ],
[0. , 0.5]])
'''
print(a2)
'''
matrix([[2., 0.],
[0., 2.]])
'''
print(a1*a2)
'''
matrix([[1., 0.],
[0., 1.]])
'''
矩阵、列表、数组之间的转换
a = [[1,2],[3,4],[5,6]] #列表
b = array(a) #列表转数组
c = mat(b) #数组转矩阵
c.getA() # 矩阵转换为数组
c.tolist() # 矩阵转换为列表
b.tolist() # 数组转换为列表