本文主要介绍python常用的矩阵运算(总结),通过示例代码介绍的非常详细,对大家的学习或工作有一定的参考价值。有需要的朋友下面跟边肖学习。
Python的numpy库提供了矩阵运算的功能,所以当我们需要矩阵运算的时候,就需要导入numpy的包。
1.numpy的导入和使用
从numpy导入*;#导入numpy的库函数
将numpy作为np导入;#这样使用numpy的函数时,需要从np开始.
2.矩阵的创建
从一维或二维数据创建矩阵
从numpy导入*;
a1=数组([1,2,3]);
a1=mat(a1);
创建一个通用矩阵
data1=mat(零((3,3)));
#创建一个3*3零矩阵,其中零函数的自变量是元组类型(3,3)
data2=mat(ones((2,4)));
#创建一个2 * 4 ^ 1的矩阵,默认为浮点数据。如果需要int类型,可以使用dtype=int。
data3=mat(random.rand(2,2));
#这里的随机模块使用numpy中的随机模块。random.rand(2,2)创建一个二维数组,需要转换成#matrix。
data4=mat(random.randint(10,size=(3,3)));
#生成一个0到10之间的3*3随机整数矩阵。如果需要指定下限,可以添加一个附加参数。
data5=mat(random.randint(2,8,size=(2,5));
#生成2-8之间的随机整数矩阵
data6=mat(eye(2,2,dtype=int));
#生成一个2*2对角线的矩阵
a1=[1,2,3];
a2=mat(diag(a1));
#生成对角线为1、2、3的对角矩阵
3.常见的矩阵运算
1.矩阵乘法
a1=mat([1,2]);
a2=mat([[1],[2]);
a3=a1 * a2
将#1*2的矩阵乘以2*1的矩阵,得到1*1的矩阵。
2.矩阵点乘法
矩阵对应元素的乘法
a1=mat([1,1]);
a2=mat([2,2]);
a3=乘法(a1,a2);
矩阵乘法
a1=mat([2,2]);
a2=a1 * 2;
3.矩阵求逆和转置
矩阵求逆
a1=mat(eye(2,2)* 0.5);
a2=a1。我;
#求矩阵matrix的逆矩阵([[0.5,0],[0,0.5]])
矩阵转置
a1=mat([[1,1],[0,0]]);
a2=a1。t;
4.计算矩阵相应行和列的最大值、最小值和总和。
a1=mat([[1,1],[2,3],[4,2]);
计算每一列和每一行的总和。
a2=a1.sum(轴=0);//列和,这里我们得到的是一个1*2的矩阵
a3=a1.sum(轴=1);//行,这里我们得到的是一个3*1的矩阵
a4=sum(a1[1,);//计算第一行中所有列的总和。这里你得到的是一个数值
计算最大值、最小值和索引
a1 . max();//计算a1矩阵中所有元素的最大值,这里得到的结果是一个数值
a2=max(a1[:1]);//计算第二列的最大值。这里你得到的是一个1*1的矩阵
a1[1,]。max();//计算第二行的最大值,这里得到的值是一个一个的。
np.max(a1,0);//计算所有列的最大值。这里使用numpy中的max函数。
np.max(a1,1);//计算所有行的最大值,这里得到的是一个矩阵
np.argmax(a1,0);//计算所有列的最大值对应的该列的索引
np.argmax(a1[1,);//计算新行对应的第二行中最大值的索引。
5.矩阵的分离和合并
矩阵的分离与列表和数组的分离是一致的。
a=mat(ones((3,3)));
b=a[1:1:];//拆分第二行之后的行和第二列之后的列的所有元素
矩阵的合并
a=mat(ones((2,2)));
b=mat(眼(2));
c=vstack((a,b));//按列合并,即增加行数
d=hstack((a,b));//按行合并,即行数不变,列数扩大。
4.矩阵、列表、数组的转换
列表可以修改,列表中的元素可以生成不同类型的数据,如下所示:
l1=[[1],'你好',3];
numpy中的数组(其中同一数组中的所有元素必须是同一类型)有几个公共属性:
a=数组([[2],[1]]);
dimension=a . ndim;
m,n=a.shape
number=a . size;//元素总数
str=a.dtype//元素的类型
numpy中的矩阵也有几个数组共有的属性。
它们之间的转换:
a1=[[1,2],[3,2],[5,2]];//列表
a2=数组(a1);//将列表转换为二维数组
a3=数组(a1);//将列表转换成矩阵
a4=数组(a3);//将矩阵转换成数组
a5=a3 . to list();//将矩阵转换成列表
a6=a2 . to list();//将数组转换为列表
这里可以发现,三者之间的转换非常简单。这里需要注意的是,当列表是一维的时候,先转换成数组和矩阵是不一样的,然后用tolist()转换成列表,需要做一些小的修改。如下所示:
a1=[1,2,3];
a2=数组(a1);
a3=mat(a1);
a4=a2 . to list();//这里得到的是[1,2,3]
a5=a3 . to list();//这里得到的是[[1,2,3]]
a6=(a4==a5);//a6=假
a7=(a4是a5[0]);//a7=True,a5[0]=[1,2,3]
矩阵转换成数值,存在以下情况之一:
dataMat=mat([1]);
val=dataMat[0,0];//此时得到的是矩阵元素的值,而不是矩阵的类型。
这就是本文的全部内容。希望对大家的学习有帮助,支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。