需要安装numpy模块,在DOS命令行中执行pip install numpy就可以,python新版本集成了pip功能的。
直接上代码,看注释
# coding=utf-8
import numpy as np #调用numpy模块,重命名为np
from numpy import * #调用numpy模块中所有方法
#矩阵创建:
a=mat([[-2,3,4],[4,9,-8],[2,5,7]]) #创建多行矩阵,用mat([[第一行],[第二行],```])
b=mat([[4,3,3],[5,7,6],[6,8,10]]) #创建方阵
a1=mat([1,2,3]) #创建单行矩阵可以mat([])
data1 = mat(zeros((3, 3))) # 创建一个3*3的零矩阵,矩阵这里zeros函数的参数是一个tuple类型(3,3)
data2 = mat(ones((2, 4))) # 创建一个2*4的1矩阵,默认是浮点型的数据,如果需要时int类型,可以使用dtype=int
data3 = mat(random.rand(2, 2)) # 这里的random模块使用的是numpy中的random模块,random.rand(2,2)创建的是一个二维数组,需要将其转换成matrix
data4 = mat(random.randint(10, size=(3, 3))) # 生成一个3*3的0-10之间的随机整数矩阵,如果需要指定下界则可以多加一个参数
data5 = mat(random.randint(2, 8, size=(2, 5))) # 产生一个2-8之间的随机整数矩阵
data6 = mat(eye(2, 2, dtype=int)) # 产生一个2*2的对角矩阵
a3 = mat(diag([1, 2, 3]))# 生成一个对角线为1、2、3的对角矩阵
b1=array([1,2,3]) #创建数组
#矩阵的基本运算:
print(a+b) #矩阵相加
print(a-b) #负矩阵
print(a*9) #矩阵数乘
print(multiply(a,b)) #两个矩阵间相同位置的元素相乘
print(a*b,"\n",b*a) #矩阵相乘,a1左乘以b,b左乘以a1
print(a.T) #矩阵转置
print(a.I) #矩阵求逆
print(np.linalg.matrix_rank(a)) #矩阵求秩
print(np.linalg.det(a)) #矩阵行列式
print(trace(a)) #矩阵的迹运算
#计算矩阵对应行列的和。
print(a.sum(axis=0)) #列和,这里得到的是1*3的矩阵
print(a.sum(axis=1)) #行和,这里得到的是3*1的矩阵)
print(a,sum(a[0,:])) #计算第一行所有元素的和,这里得到的是一个数值,下标是从0开始数。
print(sum(a[:,1])) #计算第二列所有元素的和。
#计算矩阵对应行列最大值,最小值,索引
print(a.max()) #计算a矩阵中所有元素的最大值,这里得到的结果是一个数值.
print(max(a[:,0]))#计算第一列中的最大值,,这里得到的是一个1*1的矩阵
print(a[1,:].max()) #计算第二行的最大值,这里得到的是一个一个数值
print(np.max(a,0)) #计算所有列的最大值,这里使用的是numpy中的max函数,得到的是一个矩阵
print(np.max(a,1)) #计算所有行的最大值,这里得到是一个矩阵
print(np.argmax(a,0)) #计算所有列的最大值对应在该列中的索引,索引从0开始数。
print(np.argmax(a,1)) #计算所有行的最大值对应在该列中的索引
#矩阵的分隔和合并
print(a[2:,0:]) #分割出第三行以后的的所有元素
print(a[0:,1:]) #分割出第二列以后的所有元素
print(a[1:,1:]) #分割出第二行以后的行和第二列以后的列的所有元素
print(vstack((a,b))) #按列合并,即增加行数
print(hstack((a,b))) #按行合并,即行数不变,扩展列数
# 矩阵、列表、数组的转换
lista=[1,3,2,9]
print(a.tolist()) #矩阵转换成列表,数组转换成列表也用tolist()方法
print(array(a)) #矩阵转换成数组
print(mat(lista)) #列表转换成矩阵
print(array(lista)) #列表转换成数组
我都是用的print()打印,并没有实际去真正的转换,需要的自己去操作,我只演示的方法,并能看到结果,后续继续更新,现在正在学习矩阵中。