1 乘法
- 在数组中,a * a计算对应元素相乘(矩阵点乘);在矩阵中,A*A计算矩阵乘法
- np.multiply()计算对应元素相乘(矩阵点乘)
- np.dot()计算矩阵乘法
import numpy as np
a=np.array([[1.,2.],[3.,4.]])
b=a*a #矩阵点乘
c=np.multiply(a,a) #矩阵点乘
d=np.dot(a,a) #矩阵乘法
print("[矩阵点乘]a*a=\n",b)
print("[矩阵点乘]multiply(a,a)=\n",c)
print("[矩阵乘法]dot(a,a)=\n",d)
A=np.mat([[1.,2.],[3.,4.]])
B=A*A #矩阵乘法
C=np.multiply(A,A) #矩阵点乘
D=np.dot(A,A) #矩阵乘法
print("\n[矩阵乘法]A*A=\n",B)
print("[矩阵点乘]multiply(A,A)=\n",C)
print("[矩阵乘法]dot(A,A)=\n",D)
补充:tensorflow中也有相应的矩阵运算
- a*a计算对应元素相乘(矩阵点乘)
- matmul(a,a)计算矩阵乘法
- reduce_sum(a,0) 计算列和
- reduce_sum(a,1) 计算行和
import tensorflow as tf
a=tf.constant([[1.,2.],[3.,4.]])
b=a*a #矩阵点乘
c=tf.matmul(a,a) #矩阵乘法
d=tf.reduce_sum(a,0) #列和
e=tf.reduce_sum(a,1) #列和
with tf.Session() as sess:
b=sess.run(b)
c=sess.run(c)
d=sess.run(d)
e=sess.run(e)
print("[矩阵点乘]a*a=\n",b)
print("[矩阵乘法]matmul(a,a)=\n",c)
print("[列和]reduce_sum(a,0)=\n",d)
print("[行和]reduce_sum(a,1)=\n",e)
2 除法
- x/y计算对应元素相除(矩阵点除)
- np.devide()计算对应元素相除(矩阵点除)
- np.linalg.inv()计算矩阵的逆运算(矩阵除法)
import numpy as np
a=np.array([[1.,2.],[3.,4.]])
b=a/a #矩阵点除
c=np.divide(a,a) #矩阵点除
d=np.dot(a,np.linalg.inv(a)) #矩阵除法
print("[矩阵点除]a/a=\n",b)
print("[矩阵点除]divide(a,a)=\n",c)
print("[矩阵除法]dot(a,inv(a))=\n",d)
A=np.mat([[1.,2.],[3.,4.]])
B=A/A #矩阵点除
C=np.divide(A,A) #矩阵点除
D=np.dot(A,np.linalg.inv(A)) #矩阵除法
print("\n[矩阵点除]A/A=\n",B)
print("[矩阵点除]divide(A,A)=\n",C)
print("[矩阵除法]dot(A,inv(A))=\n",D)
3 案例
已知矩阵A,其行和、列和的最大值为max,B=(1/max)A,C=B(I-B)^(-1),求C.
Python代码:
import numpy as np
def fun(A):
m,n=np.shape(A) #获取矩阵维数
x=np.sum(A,1) #行和(列向量)
y=np.sum(A,0) #列和(行向量)
s=list(x)+list(y) #拼接数组
max_=max(s) #行和、列和中的最大值
B=A/max_
I=np.eye(m,n) #生成单位矩阵
C=np.dot(B,np.linalg.inv(I-B))
return C #函数返回值
if __name__=='__main__': #判断是否为主函数
A=np.array([[1,2],[3,4]])
C=fun(A)
print(C)
另外,笔者在这里也附上Matlab代码,个人感觉还是Matlab语法更贴近自然语言。
fum.m文件(注意:Matlab要求文件名和函数名必须同名)
function C=fun(A)
[m,n]=size(A); %获取矩阵维数
for i=1:m
s1(i)=sum(A(i,:)); %计算行和
end
for j=1:n
s2(j)=sum(A(:,j)); %计算列和
end
max_=max([s1,s2]); %合并行向量、列向量,并求合并后的最大值
B=A./max_;
I=eye(m,n) %单位矩阵
C=B/(I-B);
end
demo.m文件
clear,clc %清空变量空间,并擦除命令窗口
A=[1 2;3 4];
C=fun(A)
声明:本文转自Python中矩阵运算(基于numpy包)
标签:Python,sum,矩阵,点除,print,np,numpy,dot From: https://www.cnblogs.com/zhyan8/p/17232651.html