python的numpy库提供矩阵运算的功能,因此我们在需要矩阵运算的时候,需要导入numpy的包。
计算矩阵对应行列的最大、最小值、和。
3a1=mat([[1,1],[2,3],[4,2]])
a1
matrix([[1, 1],
[2, 3],
[4, 2]])
计算每一列、行的和
a2=a1.sum(axis=0) #列和,这里得到的是1*2的矩阵
a2
matrix([[7, 6]])
a3=a1.sum(axis=1) #行和,这里得到的是3*1的矩阵
a3
matrix([[2],
[5],
[6]])
a4=sum(a1[1,:]) #计算第一行所有列的和,这里得到的是一个数值
a4
5 #第0行:1+1;第2行:2+3;第3行:4+2
计算最大、最小值和索引
a1.max() #计算a1矩阵中所有元素的最大值,这里得到的结果是一个数值
4
a2=max(a1[:,1]) #计算第二列的最大值,这里得到的是一个1*1的矩阵
a2
matrix([[3]])
a1[1,:].max() #计算第二行的最大值,这里得到的是一个一个数值
3
np.max(a1,0) #计算所有列的最大值,这里使用的是numpy中的max函数
matrix([[4, 3]])
np.max(a1,1) #计算所有行的最大值,这里得到是一个矩阵
matrix([[1],
[3],
[4]])
np.argmax(a1,0) #计算所有列的最大值对应在该列中的索引
matrix([[2, 1]])
np.argmax(a1[1,:]) #计算第二行中最大值对应在该行的索引
1
使用numpy创建矩阵有2种方法,一种是使用numpy库的matrix直接创建,另一种则是使用array来创建。首先加载numpy库,然后分别用上面说的2种方法来分别构建一个4×3的矩阵,如图
2
矩阵创建好了,大家看到了2个矩阵长得差不多,是否相等呢?我们用==(python中用==表示等于)来试试看看,如下图
3
我们下面看看2个矩阵相乘的结果,可以看到使用matrix创建的矩阵m1乘以自身,结果报错了:因为矩阵相乘需要满足一定的条件[1];而使用array创建的矩阵m2乘以自身,结果并没有报错,因为这里用的是Hadamard乘法[2];而m1×m2也报错了,说明只要有一个是matrix,就不能用Hadamard乘法,如图所示
4
下面看几个特殊矩阵[3]:使用np.zeros可以生成零矩阵,使用np.ones可以生成1矩阵,使用np.identity可以生成单位矩阵,使用np.diag可以生成对角矩阵,如图所示
5
最后看看矩阵的行向量和列向量提取方法。例如m1[[0,3]]表示提取矩阵m1的第0行和第3行[4],当然也可以用m1[[True,False,False,True]]来达到同样的效果,True就是表示对应的行要提取;而m1[:,[-2,-1]]则是提取矩阵的最后2列的列向量,m1[:,[False,True,True]]的一样可以提取最后2列的列向量,如图所示
END
注意事项
[1]在高等数学或者线性代数等已经学过了当后面的矩阵的行数等于前面矩阵的列数时,2个矩阵才可以相乘
[2]Hadamard指的是2个m×n的矩阵相乘,结果仍然是m×n的矩阵,结果为对应元素的乘积
[3]单位矩阵是特殊的对角矩阵,零(1)矩阵是指元素全部是0(1)的矩阵
[4]矩阵的第一行是从0开始编号的,python中的各种编号基本上都是从0开始的
使用python表示矩阵的方法:
使用“import numpy”语句导入numpy包。用numpy包的array函数创建一个二维数组,这个二维数组就表示矩阵
示例代码如下:
执行结果如下:
本文转载自互联网,如有侵权,联系删除