NumPy函数库中存在两种不同的数据类型(矩阵matrix和数组array),它们都可以用于处理行列表示的数组元素,
虽然它们看起来很相似,但是在这两种数据类型上执行相同的数学运算,可能得到不同的结果。 在NumPy中,矩阵应用十分广泛
创建矩阵 mat()mat()函数创建的是矩阵类型,array()函数创建的是数组类型,而用mat()函数创建的矩阵才能进行一些线性代数的操作
语法:np.mat([[数据]])
注意:矩阵需要使用[]包着
(1)创建一个3×3的0(零)矩阵 np.mat(np.zeros((3,3)))
(2)创建一个2x4的1矩阵 np.mat(np.ones((2,4)))
(3)使用random模块的rand()函数创建一个3×3为0~1随机产生的二维数组,并将其转换为矩阵
np.mat(np.random.rand(3,3))
(4)创建一个1~8的随机整数矩阵 np.mat(np.random.randint(1,8,size=(3,5)))
(5)创建对角矩阵 np.mat(np.eye(4,4,dtype=int))
(6)创建对角线矩阵 np.mat(np.diag())
矩阵运算使用算术运算符“+”“-”“*”“/”对矩阵进行加、减、乘、除的运算
矩阵的加减除可以直接对两个数组进行操作
但是矩阵的乘法比较特殊,第一行要分别乘于每一列得出结果
import numpy as np data1=np.mat([[1,2],[3,4],[5,6]]) data2=np.mat([[1,2],[3,4]]) print(data1*data2)
结果:[[ 7 10] [15 22] [23 34]]
运算过程:data1中的1,2分别乘于data2的1,3和2,4,然后依次类推
矩阵元素相乘可以使用multiply()函数
矩阵转换 1.矩阵转置 T使用T属性实现矩阵转置
2.矩阵求逆 I矩阵要可逆,否则意味着该矩阵为奇异矩阵(即矩阵的行列式的值为0)
NumPy常用统计分析函数 数学运算函数| 函数 | 说明 |
|---|---|
| add() subtract() multiply() divide() | 简单的数组加减乘除运算 |
| abs() | 取绝对值 |
| sqrt() | 计算数组中各元素的平方根 |
| square() | 计算数组中各元素的平方 |
| log() log10() log2() | 计算数组中各元素的自然对数分别以10,2为底 |
| reciprocal() | 计算数组中各元素的倒数,4/3的倒数是3/4 |
| power() | 第一个数组中的元素为底数,计算它与第二各数组中相应元素的幂 |
| mod() | 计算数组之间相应元素相除后的余数 ,负数取余算法r=a-n[a//n] ,其中r为余数,a是被除数,n是除数,“//”为运算取商时保留整数的下界,即偏向于较小的整数 |
| around() | 指定小数位数的四舍五入,如果数为一个负数,那么就向数据前多少位进行四舍五入 |
| ceil() floor() | 计算数组中各元素向上取整,返回大于或者等于指定表达式的最小整数 向下取整:返回小于或者等于指定表达式的最大整数 |
| sin() cos() tan() | 三角函数,计算数组中角度的正弦值,余弦值,和正切值 |
| modf() | 把数组的小数位和整数分割成独立的数组 |
| exp() | 计算数组中各元素的指数值 |
| sign() | 计算数组中各元素的符号值(+ )(-) |
| maximum() fmax() | 计算数组元素的最大值 |
| minimum() fmin() | 计算数组中元素的最小值 |
| copysign(a,b) | 将数组b中各元素的符号赋值给数组a对应的元素 |
| 函数 | 说明 |
|---|---|
| sum() | 对数组中元素或某行某列的元素求和,不指定行列,求得是整个数组的和, 可以使用axis指定行列0表示行,1表示列 |
| cumsum() | 所有数组元素的累计求和,第一行/列数据加上第二行/列数据,依次累加 最后一行/列的值是上边的累加 |
| cumprod() | 所有数组元素累计求积,原理同上 |
| mean() | 计算平均值,默认是所有数据的平均值,可以使用axis指定 |
| min() max() | 计算数组的最小值和最大值 |
| average() | 加权平均值,一个数出现的次数为权,将一组数据与出现的次数相乘再平均就是“加权平均” |
| median() | 计算数组中元素的中位数(中值) |
| var() | 计算方差 |
| std() | 计算标准差 |
| prod() | 求积 |
| argmin() argmax() | 计算数组最小值和最大值的下标 |
| unravel_index() | 根据数组形状将一维下标转成多维下标 |
| ptp() | 计算数组最大值和最小值的差 |
使用sort函数进行排序,直接会改变原数组,参数axis指定按行还是按列排序
2.argsort()函数使用argsort()函数对数组进行排序,返回升序排序之后数组值从小到大的索引值
返回的是我们排序后的索引值,而不是数据
3.lexsort()函数lexsort()函数用于对多个序列进行排序。可以把它当作是对电子表格进行排序,每一列代表一个序列,排序时优先照顾靠后的列
有一组数据,总分,数学和英语分数,如果想要按照总分优先,数学其次,最后看英语成绩的这样的一个数据,他们的排序应该是英语,数学,和总分,优先照顾靠后的列



