python数组和矩阵的用法解读
作者:wxyld 发布时间:2023-07-13 07:38:18
python数组和矩阵
先创建一个一维数组
直接定义一个数组:
a = [1,2,3,4,5]
b = ['a','c','c','s']
print(a)
print(b)
输出结果:
通过键盘输入一个数组,每个数用空格隔开:
a = input().split(' ')
print(a)
输出结果:
但是这个时候返回的a是一个字符串类型的列表,要转换为想要的类型该怎么做呢?
转换成int类型:
a = input().split(' ')
print(a)
#遍历每个元素进行转换
c=[]
for i in a:
c.append(int(i))
for i in range(0,len(c)):
print(c[i],end=" ")
print()
#使用内置函数map()
d=list(map(int,a))
for i in range(0,len(d)):
print(d[i],end=" ")
print()
#利用列表的推导式
e=[int(i) for i in a]
for i in range(0,len(e)):
print(e[i],end=" ")
输出结果:
二维数组该如何创建呢?
直接循环定义:
arr = [[0] * 3 for i in range(2)]
print(arr)
arr[0][1] = 1
print(arr)
高级方法有没有?当然有,就是numpy包的使用
import numpy as np
#创建全零数组,使用频率高
#dtype 默认float类型
arr = np.zeros((2,5),dtype=int)
print(arr)
arr[1][0] = 1
print(arr)
#可以将两个创建好的一维数组生成一个二维数组
a = np.array([[1,2,3],[4,5,6]])
print(a)
a[0][0] = 0
print(a)
数组与矩阵
矩阵是一种二维数据结构,和二维数组相似,但二者又有很大差别。很多时候我们都直接将二维数组当作矩阵运算
其实就是numpy中mat()函数和array()函数的区别:
聊区别就先看看他们的相同的用法,两者都可以进行矩阵运算
import numpy as np
a1 = np.array([[1,2,3], [4,5,6]])
b1 = np.mat([[1,2,3], [4,5,6]])
a2 = np.array(([1,2,3], [4,5,6]))
b2 = np.mat(([1,2,3], [4,5,6]))
a3 = np.array(((1,2,3), (4,5,6)))
b3 = np.mat(((1,2,3), (4,5,6)))
输出结果都是
他们得到的矩阵性质不同,在矩阵乘法的使用也不同。
mat()和 array ()后面加上 .T 得到转置。但是mat()还可以在后面加 .H 得到共轭矩阵, 加 .I 得到逆矩阵
array()乘法:*代表点乘(对应元素相乘),dot()代表矩阵乘(叉乘)。
mat()乘法:*代表矩阵乘(叉乘),multiply()代表点乘。
import numpy as np
a = np.array([[1,2,3], [4,5,6],[7,8,9]])
b = np.mat([[1,2,3], [4,5,6],[7,8,9]])
c = np.ones((3,3),dtype=int)
print(a)
print(b)
print(c)
#叉乘
print(np.dot(a,c))
print(np.dot(b,c))
#点乘
print(np.multiply(b,c))
print(a*c)
输出结果:
array()的平方是矩阵对应位置数的平方,mat()的平方是矩阵乘积
print("a的平方",a**2)
print("b的平方",b**2)
输出结果:
python矩阵的基本运算
一、python矩阵操作
先引入numpy,以后的教程中,我们都引用为np作为简写
使用mat函数创建一个2X3矩阵
使用shape获取矩阵大小
使用下标读取矩阵中的元素
进行行业转换
通常情况下,使用二维数组代替矩阵来进行矩阵运算,可见矩阵和数组基本上都可以
加减法同样
当然列表是不能这么尽兴加减的
二、python矩阵乘法
使用Python的numpy包进行矩阵的乘法运算
使用二位数组创建两个矩阵A和B
矩阵的数乘,即矩阵的每一个元素乘以该数
dot函数用于矩阵乘法,对于二维数组,它计算的是矩阵乘积,对于一维数组,它计算的是内积。注意交换矩阵的前后位置会导致不同的结果
再建立一个二位数组
验证矩阵乘法的结合性(AB)C=A(BC)
加法的分配性:(A+B)C=AC+BC,C(A+B)=CA+CB
数乘的结合性
使用eye创建一个单位矩阵
一个矩阵
A乘以一个单位矩阵,还是它本身
三、python矩阵转置
矩阵的转置很简单,就是将矩阵的行变为列,将列变为行
创建一个矩阵D,使用属性T得到矩阵D的转置矩阵E
矩阵转置的基本性质:
验证性质1:(A’)’=A
验证性质2:(A±B)’=A’±B’:
创建两个尺寸相同的矩阵
验证性质3:(KA)’=KA’
验证性质4:(A×B)’= B’×A’
四、python求方阵的迹
方阵的迹就是主对角元素之和
创建一个方阵(方阵也就是行数等于列数的矩阵)
用trace计算方阵的迹
.创建一个方阵F
验证一下方阵的迹等于方阵的转置的迹
验证一下方阵的乘积的迹等于
五、python方阵的行列式计算方法
计算方阵的行列式,用到的是numpy模块的linalg.det方法
行列式的算法:这是二阶方阵行列式:
行列式的算法:这是三阶行列式
利用E,F进行行列的计算
使用det方法求得方阵E和方阵F的行列式
六、python求逆矩阵/伴随矩阵
设A是数域上的一个n阶方阵,若在相同数域上存在另一个n阶矩阵B,使得: AB=BA=E。 则我们称B是A的逆矩阵,而A则被称为可逆矩阵。当矩阵A的行列式|A|不等于0时才存在可逆矩阵。而伴随矩阵的定义:
先来求一下矩阵的逆,先引入numpy
创建一个方阵
使用linalg.det求得方阵的行列式
使用linalg.inv求得方阵A的逆矩阵
利用公式:
numpy的计算方法:
七、python解多元一次方程用python的
用python的numpy包中的linalg.solve()方法解多元一次方程
首先看一下我们要解的方程,将这个方程格式调整好,按照x-y-z-常数项的顺序排列
将未知数的系数写下来,排列成一个矩阵
a={[1,2,1],
[2,-1,3],
[3,1,2]}
常数项构成一个一维数组(向量)
使用linalg.solve方法解方程,参数a指的是系数矩阵,参数b指的是常数项矩阵:
使用点乘的方法可以验证一下,系数乘以未知数可以得到常数项
来源:https://blog.csdn.net/wxyld/article/details/121846000


猜你喜欢
- 字典转换为字符串if __name__ == '__main__': a = {'a' : 1,
- .asa是文件后缀名,它是Active Server Application的首字母缩写。Global.asa文件可以管理在ASP应用中两个
- 这篇文章主要介绍了python如何基于redis实现ip代理池,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- 递归和尾递归简单的说,递归就是函数自己调用自己,它做为一种算法在程序设计语言中广泛应用。其核心思想是把一个大型复杂的问题层层转化为一个与原问
- mysql5.6.28安装教程分享1、在安装MySQL-5.6.28.tar.gz前,先安装编译环境yum -y install
- property() 函数的作用是在新式类中返回属性值。Python中有一个property的语法,它类似于C#的get set语法,其功能
- 天气查询python小程序第0步:导入工具库第一步:生成查询天气的url链接第二步:访问url链接,解析服务器返回的json数据,变成pyt
- 一提到数字图像处理,可能大多数人就会想到matlab,但matlab也有自身的缺点:1、不开源,价格贵2、软件容量大。一般3G以上,高版本甚
- Microsoft SQL Server 7.0安全问题Microsoft Corporation【「Microsoft SQL Serve
- inspectdb使用步骤1.配置项目setting文件2.配置项目__init__.py 使用pymysql连接数据库 import py
- 本文包括两部分,一部分是源码解读,另一部分是对zap的增强。由于zap是一个log库,所以从两方面来深入阅读zap的源码,一个是初始化log
- 前言最开始想尝试在windows下面安装python3.6,虽然python安装成功,但在安装Cryto模块用pip3 install py
- 我们要先配置npm的全局模块的存放路径以及cache的路径,例如我希望将以上两个文件夹放在nodejs的主目录下,便在nodejs下建立”n
- 为什么传输几千个表的数据时向导会失败?当前的向导体系结构会创建一个 DTS 软件包数据流以传输数据。但如果要处理几千个表,则会遇到可伸缩性限
- 最近使用Mac系统,准备搭建一套本地web服务器环境。因为Mac系统自带PHP和apach,但是没有自带mysql,所以要手动去安装mysq
- 基本思路使用GDAL创建Shapefile数据的基本步骤如下:使用osgeo.ogr.Driver的CreateDataSource()方法
- github主页导入:>>> from fuzzywuzzy import fuzz>>> from f
- 笔者最近在学习用OpenCV做人脸识别,用的是python语言,Anaconda里面自带的Spyder编辑器,但是按照人脸识别的教程安装好O
- 本文实例为大家分享了js实现简单放大镜特效的具体代码,供大家参考,具体内容如下先来看看效果:写放大镜之前我们先来了解一下定位:通常子绝父相
- 中介者模式中介者模式(Mediator Pattern)是一种常用的设计模式,用于解决各个对象之间的复杂依赖关系,使得各个对象之间可以独立地