网络编程
位置:首页>> 网络编程>> Python编程>> python数组和矩阵的用法解读

python数组和矩阵的用法解读

作者:wxyld  发布时间:2023-07-13 07:38:18 

标签:python,数组,矩阵

python数组和矩阵

先创建一个一维数组

直接定义一个数组:

a = [1,2,3,4,5]
b = ['a','c','c','s']
print(a)
print(b)

输出结果:

python数组和矩阵的用法解读

通过键盘输入一个数组,每个数用空格隔开:

a = input().split(' ')
print(a)

输出结果:

python数组和矩阵的用法解读

但是这个时候返回的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=" ")

输出结果:

python数组和矩阵的用法解读

二维数组该如何创建呢?

直接循环定义:

arr = [[0] * 3 for i in range(2)]
print(arr)
arr[0][1] = 1
print(arr)

python数组和矩阵的用法解读

高级方法有没有?当然有,就是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)

python数组和矩阵的用法解读

数组与矩阵

矩阵是一种二维数据结构,和二维数组相似,但二者又有很大差别。很多时候我们都直接将二维数组当作矩阵运算

其实就是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)))

输出结果都是

python数组和矩阵的用法解读

他们得到的矩阵性质不同,在矩阵乘法的使用也不同。

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)

输出结果:

python数组和矩阵的用法解读

python数组和矩阵的用法解读

python数组和矩阵的用法解读

array()的平方是矩阵对应位置数的平方,mat()的平方是矩阵乘积

print("a的平方",a**2)
print("b的平方",b**2)

输出结果:

python数组和矩阵的用法解读

python矩阵的基本运算

一、python矩阵操作

先引入numpy,以后的教程中,我们都引用为np作为简写

python数组和矩阵的用法解读

使用mat函数创建一个2X3矩阵

python数组和矩阵的用法解读

python数组和矩阵的用法解读

使用shape获取矩阵大小

python数组和矩阵的用法解读

使用下标读取矩阵中的元素

python数组和矩阵的用法解读

进行行业转换

python数组和矩阵的用法解读

通常情况下,使用二维数组代替矩阵来进行矩阵运算,可见矩阵和数组基本上都可以

python数组和矩阵的用法解读

python数组和矩阵的用法解读

加减法同样

python数组和矩阵的用法解读

当然列表是不能这么尽兴加减的

python数组和矩阵的用法解读

二、python矩阵乘法

使用Python的numpy包进行矩阵的乘法运算

使用二位数组创建两个矩阵A和B

python数组和矩阵的用法解读

矩阵的数乘,即矩阵的每一个元素乘以该数

python数组和矩阵的用法解读

dot函数用于矩阵乘法,对于二维数组,它计算的是矩阵乘积,对于一维数组,它计算的是内积。注意交换矩阵的前后位置会导致不同的结果

python数组和矩阵的用法解读

再建立一个二位数组

python数组和矩阵的用法解读

验证矩阵乘法的结合性(AB)C=A(BC)

python数组和矩阵的用法解读

python数组和矩阵的用法解读

加法的分配性:(A+B)C=AC+BC,C(A+B)=CA+CB

python数组和矩阵的用法解读

数乘的结合性

python数组和矩阵的用法解读

使用eye创建一个单位矩阵

一个矩阵

python数组和矩阵的用法解读

A乘以一个单位矩阵,还是它本身

python数组和矩阵的用法解读

三、python矩阵转置

矩阵的转置很简单,就是将矩阵的行变为列,将列变为行

创建一个矩阵D,使用属性T得到矩阵D的转置矩阵E

python数组和矩阵的用法解读

矩阵转置的基本性质:

python数组和矩阵的用法解读

验证性质1:(A’)’=A

python数组和矩阵的用法解读

python数组和矩阵的用法解读

验证性质2:(A±B)’=A’±B’:

创建两个尺寸相同的矩阵

python数组和矩阵的用法解读

python数组和矩阵的用法解读

验证性质3:(KA)’=KA’

python数组和矩阵的用法解读

验证性质4:(A×B)’= B’×A’

python数组和矩阵的用法解读

四、python求方阵的迹

方阵的迹就是主对角元素之和

创建一个方阵(方阵也就是行数等于列数的矩阵)

python数组和矩阵的用法解读

用trace计算方阵的迹

python数组和矩阵的用法解读

.创建一个方阵F

python数组和矩阵的用法解读

验证一下方阵的迹等于方阵的转置的迹

python数组和矩阵的用法解读

验证一下方阵的乘积的迹等于

python数组和矩阵的用法解读

五、python方阵的行列式计算方法

计算方阵的行列式,用到的是numpy模块的linalg.det方法

行列式的算法:这是二阶方阵行列式:

python数组和矩阵的用法解读

行列式的算法:这是三阶行列式

python数组和矩阵的用法解读

利用E,F进行行列的计算

python数组和矩阵的用法解读

使用det方法求得方阵E和方阵F的行列式

python数组和矩阵的用法解读

python数组和矩阵的用法解读

六、python求逆矩阵/伴随矩阵

设A是数域上的一个n阶方阵,若在相同数域上存在另一个n阶矩阵B,使得: AB=BA=E。 则我们称B是A的逆矩阵,而A则被称为可逆矩阵。当矩阵A的行列式|A|不等于0时才存在可逆矩阵。而伴随矩阵的定义:

python数组和矩阵的用法解读

先来求一下矩阵的逆,先引入numpy

python数组和矩阵的用法解读

创建一个方阵

python数组和矩阵的用法解读

使用linalg.det求得方阵的行列式

python数组和矩阵的用法解读

使用linalg.inv求得方阵A的逆矩阵

python数组和矩阵的用法解读

利用公式:

python数组和矩阵的用法解读

numpy的计算方法:

python数组和矩阵的用法解读

七、python解多元一次方程用python的

用python的numpy包中的linalg.solve()方法解多元一次方程

首先看一下我们要解的方程,将这个方程格式调整好,按照x-y-z-常数项的顺序排列

python数组和矩阵的用法解读

将未知数的系数写下来,排列成一个矩阵

a={[1,2,1],
[2,-1,3],
[3,1,2]}

python数组和矩阵的用法解读

常数项构成一个一维数组(向量)

python数组和矩阵的用法解读

使用linalg.solve方法解方程,参数a指的是系数矩阵,参数b指的是常数项矩阵:

python数组和矩阵的用法解读

使用点乘的方法可以验证一下,系数乘以未知数可以得到常数项

python数组和矩阵的用法解读

来源:https://blog.csdn.net/wxyld/article/details/121846000

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com