数据分析03——矩阵常用计算方法和函数

0、前言:

  • 数组:计算机领域的概念
  • 矩阵:数学领域的概念
  • 对于Numpy而言,矩阵是数组的分支

1、创建矩阵:

  • 字符串创建矩阵:mat1 = np.matrix(‘1 2;3 4’)
  • 列表形式创建矩阵:mat2 = np.matrix([[5, 6], [7, 8]])
  • 通过数组创建矩阵:
    arr = np.array([[5, 6], [7, 8]])
    mat3 = np.matrix(arr)
  • 创建3*3的0矩阵: np.matrix(np.zeros((3, 3)))
  • 创建3*3的1矩阵:np.matrix(np.ones([2, 4]))
  • 创建3*3的矩阵,数值范围为[0,1)的小数:np.matrix(np.random.rand(3, 3))
  • 创建3*5的矩阵,数值范围为[1,8)的整数:np.matrix(np.random.randint(1, 8, size=(3, 5)))
  • 创建4*4的对角矩阵,对角线元素为1,其他元素为0,即单位矩阵:np.matrix(np.eye(4, 4, dtype=int))
  • 创建3*3的对角矩阵,对角线元素为[1, 2, 3]:np.matrix(np.diag([1, 2, 3]))

2、矩阵运算1:

  • 数组四则运算原理:广播机制
    在这里插入图片描述
    上图中,两个数组可以进行四则运算的前提要么是两个数组形状相同,要么就符合上面的广播机制。
  • 同理,矩阵的(加法、减法、除法)运算也可以应用传播机制
  • 矩阵乘法运算要求:第1个矩阵的列数必须等于第2个矩阵的行数
  • 两个二维(通过”数组名.ndim“查看维数,一般有几个中括号就是几维)数组的点乘运算等价于矩阵乘法运算:np.dot(m3, m4)

3、矩阵重塑:

  • 矩阵转置:mat.T
  • reshape矩阵重塑
    重塑前后的元素个数必须一致
    重塑后不会修改原矩阵
  • resize矩阵重塑
    重塑前后的元素个数可以不一致:重塑后比原尺寸小,自动截断。重塑后比原尺寸大,以0填充。
    重塑后会修改原矩阵

4、数学运算函数:

  • 以下举例假设新建了n1和n2和n3数组
  • 通过函数进行数学运算
  • 符号运算和函数运算均采用广播机制,以下介绍函数运算
  • 判断数组是几维的:数组名.ndim
  • 加法运算:np.add(n1, n2)
  • 减法运算:np.subtract(n1, n2)
  • 乘法运算:np.multiply(n1, n2)
  • 除法运算:np.divide(n1, n2)
  • 幂运算:np.power(n1, n2) # 以n1中元素为底数,n2对应位置元素为指数。
  • 取整(相除后取整数部分):np.floor_divide(n1, n2)
  • 取余/取模(相除后取余数部分):np.mod(n1, n2)
  • 求相反数:np.negative(n1)
  • 求倒数:np.reciprocal(n1.astype(float)) # 换成浮点型的原因是为了求出来有小数
  • 四舍五入保留两位小数:np.around(n2, decimals=2)
  • 四舍五入取整到小数点左侧一位:np.around(n3, decimals=-1)
  • 向上取整:np.ceil(n3)
  • 向下取整:np.floor(n3)
  • 元素累加、元素累乘
  • 指数运算、对数运算

5、统计分析函数:

  • 对数组求和:数组名.sum()
  • 每列的行元素求和:数组名.sum(axis=0)
  • 每行的列元素求和:数组名.sum(axis=1)
  • 对数组求平均值:数组名.mean()
  • 按照行求平均值:数组名.mean(axis=0)
  • 按照列求平均值:数组名.mean(axis=1)
  • 求数组最大值:arr.max()
  • 按照行求最大值:arr.max(axis=0)
  • 按照列求最大值:arr.max(axis=1)
  • 加权平均值:
    按数量number占比来计算加权单价price
    加权平均数的好处消除极端值的影响
    np.average(price, weights=number)
  • 中位数:np.median(数组名)
  • 方差:np.var(数组名)
  • 标准差:np.std(数组名)

6、数组排序

  • 把每一列中所有行进行排序:np.sort(n, axis=0)
  • 把每一列中所有行进行降序:
    先升序再反转
    asc = np.sort(n, axis=0)
    np.flip(asc, axis=0)
  • 把每一行中所有列进行升序:np.sort(n, axis=1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值