首页 > 编程语言 >乘法|python矩阵基本运算(学习笔记二)

乘法|python矩阵基本运算(学习笔记二)

时间:2024-08-27 13:25:42浏览次数:12  
标签:python 矩阵 a1 b1 数组 print array 乘法

在前述文章中,我们已经知道,python通过使用numpy模块,创建矩阵形数组至少可以采用两种方法。也即,通过array和matrix子模块分别创建,详情请参考以下链接。https://blog.csdn.net/weixin_44855046/article/details/141564179?spm=1001.2014.3001.5502

进一步,上述链接指向文章也通过测试发现: 通过array和matrix子模块分别创建的矩阵形数组,加减法的运算结果一致。

本文继续探索,力求发现乘法运算结果是否一致。

按照先前学习内容,先完成数组定义。此处以定义3X3矩阵形数组为例:

#引入numpy模块
import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]]) #使用array子模块定义第一个3X3矩阵型数组
b=np.array([[3,2,1],[6,5,4],[9,8,7]]) #使用array子模块定义第二个3X3矩阵型数组

c=np.matrix([[1,2,3],[4,5,6],[7,8,9]]) #使用matrix子模块定义第一个3X3矩阵型数组
d=np.matrix([[3,2,1],[6,5,4],[9,8,7]]) #使用matrix子模块定义第一个3X3矩阵型数组

使用print()输出结果:

print("a=",a) #("a="会被原样输出,仅用于显示是哪个运算结果)
print("b=",b) #("b="会被原样输出,仅用于显示是哪个运算结果)
print("c=",c) #("c="会被原样输出,仅用于显示是哪个运算结果)
print("d=",d) #("d="会被原样输出,仅用于显示是哪个运算结果)

pycharm运行程序,获得结果如图:

如图所示, array定义的矩阵形数组a和b,和matrix定义的矩阵型数组c和d,分别相等:

a=c,b=d

在此基础上,尝试进行乘法计算:

【1】乘法测试:

print(a*b,'=a*b') #('=a*b'会被原样输出,仅用于显示是哪个运算结果)
print(c*d,'=c*d') #('=a*b'会被原样输出,仅用于显示是哪个运算结果)

pycharm乘法测试结果:区别显著

分析上述数据,可以发现:

【a】a*b的计算结果是对位相乘,即同一位置的数据相乘,非矩阵乘法结果。

【b】c*d的计算结果是行列相乘,即c行*b列然后结果叠加,是矩阵乘法结果。

为进一步验证上述发现,尝试把矩阵形数组转换为行列数不同的形式,继续定义数组如下:

a1=np.array([[1,2],[4,5],[7,8]]) #使用array子模块定义第一个3X2矩阵型数组
b1=np.array([[3,2,1],[6,5,4]]) #使用array子模块定义第二个2X3矩阵型数组

c1=np.matrix([[1,2],[4,5],[7,8]]) #使用matrix子模块定义第一个3X2矩阵型数组
d1=np.matrix([[3,2,1],[6,5,4]]) #使用matrix子模块定义第一个2X3矩阵型数组

print("a1=",a1) #("a1="会被原样输出,仅用于显示是哪个运算结果)
print("b1=",b1) #("b1="会被原样输出,仅用于显示是哪个运算结果)
print("c1=",c1) #("c1="会被原样输出,仅用于显示是哪个运算结果)
print("d1=",d1) #("d1="会被原样输出,仅用于显示是哪个运算结果)

pycharm运行程序,获得结果如图,两种方式的结果是一样的:

在此基础上,尝试进行乘法计算。

【2】乘法测试(行列式不同):

输入以下代码:

print(a1*b1,'=a1*b1') #('=a1*b1'会被原样输出,仅用于显示是哪个运算结果)
print(c1*d1,'=c1*d1') #('=a1*b1'会被原样输出,仅用于显示是哪个运算结果)

 pycharm运行程序,获得结果如图,a1和b1因为行列数不一致,无法计算。(a1是3行2列,b1是2行3列)

这一步的计算结果验证了【1】中【a】条发现:array定义的数组,乘法计算法则是同一位置上的数据相乘,当数据的行列不一样,同一位置的条件不能满足,因此计算无法执行。

由于计算止步于print(a1*b1,'=a1*b1'),将这一行代码变成注释,使程序执行后续代码:

#print(a1*b1,'=a1*b1') #('=a1*b1'会被原样输出,仅用于显示是哪个运算结果)
print(c1*d1,'=c1*d1') #('=a1*b1'会被原样输出,仅用于显示是哪个运算结果)

pycharm运行程序,获得结果如图:

如图所示,2行3列的a1和3行2列的b1按照矩阵乘法原则输出了结果。这一步的计算结果验证了【1】中【b】条发现:matrix定义的数组,计算结果是行列相乘。

 因此,在实际项目开发过程中,如果使用到矩阵形数组乘法,应注意合理使用array和matrix子模块。

综上所述,有以下收获:

【a】array和matrix子模块对矩阵形数组的乘法计算结果不同;

【b】array模块定义数组相乘时,要求两个数组的行列数完全一致,同一位置的数据相乘;

【c】matrix模块定义的数组执行矩阵乘法运算法则,即前矩阵形数组的行列数分别对应后矩阵形数组的列行数,两个矩阵的行列分别相乘后叠加。

附完整版代码如下:

#引入numpy模块
import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]]) #使用array子模块定义第一个3X3矩阵型数组
b=np.array([[3,2,1],[6,5,4],[9,8,7]]) #使用array子模块定义第二个3X3矩阵型数组

c=np.matrix([[1,2,3],[4,5,6],[7,8,9]]) #使用matrix子模块定义第一个3X3矩阵型数组
d=np.matrix([[3,2,1],[6,5,4],[9,8,7]]) #使用matrix子模块定义第一个3X3矩阵型数组

# 在print中插入"a="或者'=a*b',它们都会被原样输出,仅用于显示运算结果来源
print("a=",a) #("a="会被原样输出,仅用于显示是哪个运算结果)
print("b=",b) #("b="会被原样输出,仅用于显示是哪个运算结果)
print("c=",c) #("c="会被原样输出,仅用于显示是哪个运算结果)
print("d=",d) #("d="会被原样输出,仅用于显示是哪个运算结果)
print(a*b,'=a*b') #('=a*b'会被原样输出,仅用于显示是哪个运算结果)
print(c*d,'=c*d') #('=a*b'会被原样输出,仅用于显示是哪个运算结果)

a1=np.array([[1,2],[4,5],[7,8]]) #使用array子模块定义第一个3X2矩阵型数组
b1=np.array([[3,2,1],[6,5,4]]) #使用array子模块定义第二个2X3矩阵型数组

c1=np.matrix([[1,2],[4,5],[7,8]]) #使用matrix子模块定义第一个3X2矩阵型数组
d1=np.matrix([[3,2,1],[6,5,4]]) #使用matrix子模块定义第一个2X3矩阵型数组

print("a1=",a1) #("a1="会被原样输出,仅用于显示是哪个运算结果)
print("b1=",b1) #("b1="会被原样输出,仅用于显示是哪个运算结果)
print("c1=",c1) #("c1="会被原样输出,仅用于显示是哪个运算结果)
print("d1=",d1) #("d1="会被原样输出,仅用于显示是哪个运算结果)

#print(a1*b1,'=a1*b1') #('=a1*b1'会被原样输出,仅用于显示是哪个运算结果)
print(c1*d1,'=c1*d1') #('=a1*b1'会被原样输出,仅用于显示是哪个运算结果)
print(a1*b1,'=a1*b1') #('=a1*b1'会被原样输出,仅用于显示是哪个运算结果,a1*b1无法执行计算,放到最后以保证其行代码都可以被执行)

标签:python,矩阵,a1,b1,数组,print,array,乘法
From: https://blog.csdn.net/weixin_44855046/article/details/141597969

相关文章

  • 24年最新最详细Python安装教程,附安装包!感觉收藏!
      Python由荷兰国家数学与计算机科学研究中心的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。 Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,......
  • python中几种括号的各种用法()、[]、{} 及举例说明,看完就不迷茫了!
    在Python中,括号(())、方括号([])和大括号({})扮演着不同的角色,用于不同的目的。下面通过例子来说明它们各自的用法:1.圆括号 ()圆括号在Python中主要有几种用途:函数调用:用于调用函数,并传递参数给函数。defsay_hello(name):print(f"Hello,{name}!")say_hello("Alice")#调......
  • python冒泡排序
    1、什么是冒泡排序  BubbleSort是最简单和通用的排序方法,基本思想是:在待排序的一组数据中,将相邻的两个数进行比较,若前面的数比后面的数大,就交换两个数,否则不交换;如此下去,直至完成最终排序。由此可得,在排序的过程中,大的数据往下沉,小的数据往上浮,就像气泡一样。于是将这种算......
  • Python中configparser模块的基本用法
    configparser是Python标准库中的一个模块,用于处理配置文件。配置文件通常用于存储应用程序的配置信息,如数据库连接参数、日志级别设置等。configparser模块支持读取、写入和修改配置文件,这些文件通常采用类似INI格式的结构。配置文件格式配置文件一般以'.ini'作为扩展名......
  • Python开发之DOS攻击检测和防御
    文章目录==Python检测和防御DOS攻击==一、在CentOS上安装Python3二、理解各个命令的含义1、uptime2、netstat3、ss4、firewall-cmd5、sysctl三、利用python实现DOS入侵检测采集TCP连接数据采集跟DOS攻击关联度较高的数据uptimenetstat-ant连接数量ss-lnt读取队列情......
  • Python开发之DOS智能检测
    文章目录==故障上报与处理==1、设备状态信息2、性能参数3、网络连接信息4、智能预警故障上报与处理在一些简单的IIoT设备中,可能只包含一个或多个嵌入式系统,这些系统专门设计用于执行特定的任务,并且不包含传统意义上的操作系统。这些设备通常使用微控制器(MCU)或微处......
  • 【python3.8安装报错】lmportError: DLL load failed while importing ft2font: 找不
    客户需求背景:安装python3.8无法运行,报错lmportError:DLLloadfailedwhileimportingft2font:找不到指定的模块 考虑兼容性问题这个问题首先需要考虑的是是否是python版本太高了,因为python3.9不支持win7,而python3.8版本对win7的兼容性也有一定的限制。解决:首先考......
  • 四皇后问题Python实现
    四皇后问题是出自于国际象棋来提出的,众所周知,皇后(queen)在国际象棋中可以控制横竖以及斜线的棋子,那么四皇后的规则是什么呢,咱们废话不多说,直接进入它的规则。1.四皇后问题的规则四皇后问题其实就是把四个皇后放在一个四*四的棋盘上使这些皇后不被互相控制就像这样:那么怎么......
  • 基于OpenCV-Python实现人脸识别-----摄像头捕获人脸图像显示中文乱码问题
    基于OpenCV-Python实现人脸识别时,为了使图像上显示识别到人员的中文名字,做了几次尝试,使用PIL.Image和OpenCV图像格式相互转换解决:使用OpenCV将图片灰度化,对加载的灰度化图使用分类器中的detectMultiScale()函数查找目标人脸,并使用for循环实现矩形框和圆形框框住查找到的人脸。......
  • 4.Python操控Excel之格式
    1.设置字体斜体、加粗、颜色2.计算公式3.设置表格高度和宽度4.指定单元格合并5.取消指定单元格合并 ......