赞
踩
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中也有相应的矩阵运算
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)
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)
已知矩阵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)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。