一.numpy
NumPy(Numerical Python)是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix)),支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
二.利用numpy处理矩阵
首先在文件开头要导入模块
1.创建矩阵:
输出结果为
2.矩阵类型
上图为创建矩阵,并设定为64位的整型
上图为输出结果。
上图中,b=np.zeros((3,4))为创建一个shape为三行四列的一个零矩阵。c=np.ones((3,4),dtype=np.int16),意思为创建一个三行四列的一个全1矩阵,并且为16位的整型。
d=np.arange(12).reshape((3,4))是生成一个0-12的一个序列,并reshape成三行四列的一个矩阵。
e=np.linspace(1,10,5) 是生成一个线段,1为开始,10为结束,总共分5段的一行序列。
f=np.linspace(1,20,12).reshape((3,4))是生成一个线段,1为开始,20为结束,总共分12段的一个三行四列的一个矩阵。
上图为输出结果。
3.矩阵的运算
上图中,分别先创建g、h两个矩阵,第一个print(g<35)是判断g矩阵中哪些元素大于35,print(h==3)是判断h矩阵哪些元素等于3。i矩阵是g-h,是将g矩阵的每一个元素与h矩阵的每一个元素按位相减,最终得到i矩阵。j矩阵是将g矩阵中的每一个元素进行sin函数求值再乘10后形成的矩阵。
上图为输出结果。
上图中,进行了矩阵的乘法,首先创建两个矩阵k、l,m矩阵是k矩阵中的每一个元素与l矩阵中的每一个元素按位相乘所得到的矩阵,不是矩阵的乘法。而np.dot(k,l)或者k.dot(l)才是矩阵中的乘法。
上图为输出结果。
上图为矩阵的基本运算,求矩阵中的最大、最小元素,求所有元素之和,求所有行或者所有列的元素之和
4.矩阵索引
首先创建三行四列的A矩阵,argmax是索引出A矩阵中元素最大值的位置,argmin是索引出A矩阵中元素最小值的位置。mean是求A中所有元素的平均值,median是求出A元素的中位数,cumsum是累加,第一个元素为A的第一个元素,第二个元素时第二个元素为A中第一个和第二个之和,第三个元素为第一二三元素之和,以此类推。diff是累差,第一个元素为A中第二个与第一个之差,第二个元素为A中第三个与第二个之差,以此类推
上图为输出结果。
创建B矩阵,sort是将B矩阵每一行进行排序,transpose是将B矩阵进行转置。clip(B,5,9)是将B的元素中小于5的按5输出,大于9的按9输出,5-9之间不变。
创建C矩阵,C[0]是索引C矩阵中第一个元素, C[1][3]是索引C矩阵中第二行第四个元素。flatten是将每个元素分成单独的元素。
上图为输出结果
5.矩阵合并与拆分
创建A、B、C三个元素A、B是先创建一行列表,通过[:,newaxis]变成列元素,二者通过vstack合并成为C,vstack是将两个元素上下合并。hstack是左右合并。
上图为创建A元素,将A元素进行切分。axis=1进行行操作,分成等分的两个矩阵。