矩阵初始化
import numpy as np
m=np.zeros([3,5])#
print (m)
n=np.ones([3,5])
print(n)
生成3X5的矩阵值为0,1;
#生成随机数矩阵
mn=np.random.rand(3,5)#3行4列的0-1之间的随机数矩阵
print(mn)
#单位矩阵
z=np.eye(4)#4行4列一条对角线为1的单位矩阵
print (z)
2,矩阵的元素运算
- /
矩阵相加相减的条件
必须矩阵大小相等
eg:
import numpy as np
z=np.eye(4)#这是一个对角线为1的矩阵
print (z)
n=np.ones([4,4])
print (n)
print(z+n)
矩阵数乘:一个数乘以整个矩阵
import numpy as np
z=np.mat([[1,2,3],[4,5,6],[7,8,9]])
z=10*z
print (z)
矩阵所有元素求和
#这里区别sum(),和np.sum();sum()返回的是每一列的和组成的裂变,np.sum()返回矩阵和
import numpy as np
n=np.mat([[1,2,3],[4,5,6],[7,8,9]])
print (np.sum(n))
矩阵元素的积
1.如果两个矩阵维度相同,则乘相同位置数相乘
import numpy as np
n=np.random.rand(3,3)#生成3X3的矩阵值在0-1之间
print (n)
m=np.eye(3)#单位矩阵
print (m)
print (np.multiply(n,m))#也可以用‘*’号
输出:
[[0.26886197 0.92144212 0.62190632]
[0.11934666 0.83958397 0.1564729 ]
[0.41122839 0.87522917 0.82239665]]
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
[[0.26886197 0. 0. ]
[0. 0.83958397 0. ]
[0. 0. 0.82239665]]
2.两个矩阵维度不同:在大的矩阵中找到与另一个大小一样的矩阵相乘,得到一个列表
import numpy as np
n=np.mat([[1,2,3],[4,5,6],[7,8,9]])
m=np.mat([[2,2,2]])
print (np.multiply(n,m))
输出:
[[ 2 4 6]
[ 8 10 12]
[14 16 18]]
矩阵个元素的二次幂
import numpy as np
n=np.mat([[1,2,3],[4,5,6],[7,8,9]])
print (np.power(n,2))
输出:
[[ 1 4 9]
[16 25 36]
[49 64 81]]
3.矩阵的乘法
from numpy import *
n=mat([[1,2,3],[4,5,6],[7,8,9]])
m=mat([[1],[2],[3])
print (n)
print(m)
print(n*m)#1*1+2*2+3*3=14
输出:
[[1 2 3]
[4 5 6]
[7 8 9]]
[[1]
[2]
[3]]
[[14]
[32]
[50]]
4.矩阵的转置
from numpy import *
n=mat([[1,2,3],[4,5,6],[7,8,9]])
print (n.T)#90度向左转
print(n.transpose)#https://blog.csdn.net/xiongchengluo1129/article/details/79017142
5.矩阵的其他操作
行列
from numpy import *
m=mat([[1,2,3],[4,5,6],[7,8,9]])
[m,n]=shape(m)
print ('H L',m,n)#矩阵的行列数
输出:
H L 3 3
切片
from numpy import *
m=mat([[1,2,3],[4,5,6],[7,8,9]])
n=m[0]#按行切片
print (n)
k=m.T[0]#按列切片
print (k)
输出:
[[1 2 3]]
[[1 4 7]]
矩阵复制
from numpy import *
m=mat([[1,2,3],[4,5,6],[7,8,9]])
n=m.copy()#矩阵的复制
print(n)
输出:
[[1 2 3]
[4 5 6]
[7 8 9]]
追求吾之所爱