Numpy——矩阵运算

矩阵的点乘np.dot(数组1,数组2)或数组1.dot(数组2)

c=np.array([3,2,3])
b=np.array([3,2,3])
print(b.dot(c))
print(np.dot(b,c))
print(b*c)  #只是对于位置的数据相乘
'''
[22]
[22]
[9 4 9]
'''

矩阵维度重新定义,数组.reshape(参1,参2)

将数组重新分配成参1*参2类型的数组,但注意的是这不是转置,将原来的数组转换成一维后直接排列成新的数组,下面的例子可以看出

c=np.array(	[
				[3,2,3],
				[3,2,3],
			])
print(c.reshape(3,2))
'''
[[3 2]
 [3 3]
 [2 3]]
'''

矩阵的转置,np.transpose(数组)或数组名.transpose()

该转置函数返回转置后的数组,但不改变原来的数组

c=np.array(	[[3,2,3],
[3,2,3],])				
print(c.transpose())			
print(c.dot(np.transpose(c)))
print(c.dot(c.reshape(3,2)))
'''
[[3 3]
 [2 2]
 [3 3]]  #转置
[[22 22]	#转置点乘
 [22 22]]
[[21 21] #使用reshape后的点乘
 [21 21]]
'''

矩阵求逆,np.linalg.inv(数组名)

只有这一种形式

c=np.array(	[[1,0],
[0,1],])					
print(np.linalg.inv(c))
'''
[[1. 0.]
 [0. 1.]]
'''

求解多项,np.linalg.solve(数组1,数组2)

第一个数组是参数,第二个数组是结果

# 3x+5y+6z=14
# 2x+4y+8z=14
# 8x+6y+5z=19
A=np.array([[3,5,6],[2,4,8],[8,6,5]])					
b=np.array([[14],[14],[19]])
print(np.linalg.solve(A,b))
print('*'*10)
print(A.dot(np.linalg.solve(A,b)))
'''
[[1.]
 [1.]
 [1.]]
 **********
[[14.]
 [14.]
 [19.]]
 '''

取出对角线元素,np.diag(数组名)

只有这一种形式

c=np.array(	[[1,0],
[0,1],])					
print(np.diag(c))
#[1 1]
发布了70 篇原创文章 · 获赞 1 · 访问量 2438

猜你喜欢

转载自blog.csdn.net/weixin_43794311/article/details/104586954