首页 > 编程语言 >Python中矩阵运算(基于numpy包)

Python中矩阵运算(基于numpy包)

时间:2023-03-19 11:36:18浏览次数:47  
标签:Python sum 矩阵 点除 print np numpy dot

1 乘法

  1. 在数组中,a * a计算对应元素相乘(矩阵点乘);在矩阵中,A*A计算矩阵乘法
  2. np.multiply()计算对应元素相乘(矩阵点乘)
  3. 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中也有相应的矩阵运算

  1. a*a计算对应元素相乘(矩阵点乘)
  2. matmul(a,a)计算矩阵乘法
  3. reduce_sum(a,0) 计算列和
  4. 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 除法

  1. x/y计算对应元素相除(矩阵点除)
  2. np.devide()计算对应元素相除(矩阵点除)
  3. 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

相关文章

  • python中矩阵切片维数微秒变化
    1前言使用切片访问矩阵的部分数据(特别是一行或一列数据)时,通常会出现切片维数怎么在瞎变化,以致于不得不用reshape()强制改变维数。在深度学习中,网络对矩阵维数的要求是非......
  • python重新命名,名字简短化
    #filedeal.py#!/usr/bin/envpython#-*-coding:utf-8-*-importosimportshutilfromPILimportImageimportioimportrequestsimportdatetime#获取所......
  • python中矩阵合并、拼接、组合
    1numpy数组1.1append()importnumpyasnpa=np.array([[1,3],[5,7]])b=np.array([[2,4],[6,8]])c=np.append(a,b)d=np.append(a,b,axis=0)e=np.append(a,b,axi......
  • numpy数组初始化方法总结
    1使用list初始化a=np.array([[1,2,3],[4,5,6]],dtype='float32')#a=[[1.2.3.],[4.5.6.]]2赋值与复制(1)赋值a=np.array([1,2,3])b=aprint(bisa)#Trueb[0]......
  • python中两个不同shape的数组间运算规则
    1前言声明:本博客讨论的数组间运算是指四则运算,如:a+b、a-b、a*b、a/b,不包括a.dot(b)等运算,由于numpy和tensorflow中都遵循相同的规则,本博客以numpy为例。众所周......
  • Python中文件读写操作
    1txt文件1.1写操作importnumpyasnpdefwrite(fileName,data):file=open(fileName,'w')row,col=data.shapestring=""foriinrange(row):......
  • python单元测试unittest
    快速上手#被测代码defadd_func(a,b):returna+b#测试代码importunittestclassMyTest(unittest.TestCase):deftest_add_func(self):#......
  • python有序字典在做题中的使用.
    66.两个链表的第一个公共结点  题目  提交记录  讨论  题解  视频讲解输入两个链表,找出它们的第一个公共结点。当不存在公共节点时,返回空......
  • 100道python基础题——(8)
    问题:编写一个程序,接受逗号分隔的单词序列作为输入,按字母顺序排序后按逗号分隔的序列打印单词。假设向程序提供以下输入:without,hello,bag,world则输出为:bag,hello,witho......
  • 100道python基础题——(9)
    多组输入问题:编写一个程序,接受一行序列作为输入,并在将句子中的所有字符大写后打印行。假设向程序提供以下输入:HelloworldPracticemakesperfect则输出为:HELLOWORLDP......