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中矩阵运算(基于numpy包)的更多相关文章

  1. Python 中的时间处理包datetime和arrow

    Python 中的时间处理包datetime和arrow 在获取贝壳分的时候用到了时间处理函数,想要获取上个月时间包括年.月.日等 # 方法一: today = datetime.date.today ...

  2. python中常用的导包的方法和常用的库

    python中常用的导包的方法               导入包和包名的方法:1.import package.module 2.from package.module import  * 例一: ...

  3. python中的模块及包及软件目录结构规范

    知识内容: 1.模块的定义与分类 2.模块的导入 3.模块与包 4.不同目录下的模块调用 一.模块的定义与分类 1.什么是模块 模块就是实现了某个功能的代码集合,模块是由一大堆代码构成的 类似于函数式 ...

  4. python中的模块和包

    模块 一 什么是模块 模块就是一组功能的集合体,可以通过导入模块来复用模块的功能. 比如我在同一个文件夹定义两个.py文件,分别命名为A.py和B.py,那么可以通过在A文件里通过import B来使 ...

  5. 面试---Python中的模块和包是什么?

    python模块是: 自我包含并且有组织的代码片段为模块. 表现形式为:写的代码保存为文件.这个文件就是一个模块.sample.py 其中文件名smaple为模块名字. python包是: 包是一个有 ...

  6. Python中模块(Module)和包(Package)的区别

    本文绝大部分内容转载至:廖雪峰官方网站 1. 模块(Module) 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函 ...

  7. python面试题之如何在Python中创建自己的包

    Python中创建包是比较方便的,只需要在当前目录建立一个文件夹, 文件夹中包含一个__init__.py文件和若干个模块文件, 其中__init__.py可以是一个空文件,但还是建议将包中所有需要导 ...

  8. [19/10/16-星期三] Python中的模块和包、异常、操作文件

    一.模块 # 模块(module) # 模块化,模块化指将一个完整的程序分解为一个一个小的模块 # 通过将模块组合,来搭建出一个完整的程序 # 不采用模块化,统一将所有的代码编写到一个文件中 # 采用 ...

  9. Python之路-Python中的模块与包

    一.模块简介 在实际开发中我们不可能不用到系统的标准模块,或第三方模块. 如果想实现与时间有关的功能,就需要调用系统的time模块.如果想实现与文件和文件夹有关的操作,就需要要用到os模块. 每一个 ...

  10. python中的模块以及包导入

    python中的导入关键字:import 以及from  import 1.import import一般用于导入包以及模块. 不过有个小问题: (1)当导入的是模块的时候是可以直接可以使用模块内的函 ...

随机推荐

  1. Android——“EditText控件供获取最大长度的方法”

    package utils; import android.app.Activity; import android.content.Context; import android.text.Inpu ...

  2. 【水一篇】骚操作之net 6的winform启动的同时启动Net 6 WebApi【同一套代码】

    引言 有段时间没有写博客了,不知道写什么,加上最近一直在玩单片机方面的东西,所以有一些懈怠.首先呢,为什么会有这么一个问题,是在一个QQ群里,有看到有人提问,能不能在启动Winform的同时去启动一个 ...

  3. Grafana针对内存监控值的学习与使用

    Grafana针对内存监控值的学习与使用 背景 因为学习内存相关的知识, 可以通过pgcacher/sar -r 等命令监控系统信息. 但是现在发现. 不太直观, 所以想着使用别的方式来进行处理. 然 ...

  4. [转帖]终于!SOFATracer 完成了它的链路可视化之旅

    https://my.oschina.net/sofastack/blog/5283439 ▼ 背 景 有幸参与开源软件供应链点亮计划--暑期 2021 支持的开源项目,目前 SOFATracer 已 ...

  5. [转帖]Nginx反向代理中使用proxy_redirect重定向url

    https://www.cnblogs.com/kevingrace/p/8073646.html 在使用Nginx做反向代理功能时,有时会出现重定向的url不是我们想要的url,这时候就可以使用pr ...

  6. [转帖]优化命令之sar——最牛命令

    目录 一:sar命令概述 1.1sar概述 1.2sar常用选项 1.3常用参数 二:CPU资源监控 2.1整体CPU使用统计(-u) 2.2各个CPU使用统计(-P) 2.3将CPU使用情况保存到文 ...

  7. 二进制安装Mysql数据库的快速方法

    二进制安装Mysql数据库的快速方法 摘要 还是国产操作系统 rpm包可能不太兼容,为了简单准备使用tar包方式安装mysql数据库 这里简单记录一下过程. 为以后使用. 介质下载 下载二进制的tar ...

  8. 小Min_25筛小记🐤

    这里的小Min_25筛,可以筛出 $10^11$ 以内所有质数的完全积性函数之和 注意事项: 1. cmd 的题解里面下标写得不清楚,应该是 $S'(p_k-1,k-1)$ 而不是 $S'(p_{k- ...

  9. vue2-vue3监听子组件的生命周期的两种方式

    1.生命周期 生命周期是指:vue实例从创建到销毁这一系列过程.vue官网生命周期如下图所示: vue的生命周期有多少个 beforeCreate, created, beforeMount, mou ...

  10. js解析上传APK文件的详细信息

    前端解析APK版本信息 需要安装这个包,可以使用cnpm或者npm npm 安装 app-info-parser ( 命令:npm install app-info-parser) APKInfo为i ...