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

news2024/10/7 20:35:32

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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/499250.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL基础(八)聚合函数

上一章讲到了 SQL 单行函数。实际上 SQL 函数还有一类,叫做聚合(或聚集、分组)函数,它是对一组数据进行汇总的函数,输入的是一组数据的集合,输出的是单个值。 1. 聚合函数介绍 什么是聚合函数 聚合函数作…

深度学习目标检测项目实战(五)—基于mobilenetv2和resnet的图像背景抠图及其界面封装

深度学习目标检测项目实战(五)—基于mobilenetv2和resnet的图像背景抠图及其界面封装 该项目很有意思,也是比较前沿,项目主要参考了开源代码: https://github.com/PeterL1n/BackgroundMattingV2 环境搭建 kornia0.4.1 tensorboard2.3.0 to…

图像修复_criminis算法及改进算法学习小结

摘要 对图像修复专题学习情况的一个总结,学习内容包括: (1)综述文献的阅读及对图像修复的理解。 (2)criminis算法的仿真情况。 (3)criminis算法的改进算法的仿真 一、 前言 1&…

【leetcode】138.复制带随机指针的链表

《力扣》138.复制带随机指针的链表 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设…

[羊城杯 2020]a_piece_of_java

首先jd-gui进行反编译 简单查看发现有用的类就两个一个是 MainContrller.class和InfoInvocationHandler.class public class MainController {GetMapping({"/index"})public String index(CookieValue(value "data", required false) String cookieDa…

【C++】类和对象(初阶认识)#上篇#

目录 对面向过程和面向对象的初步认识 类的引入 封装 和 类的访问限定符 所以祖师爷在类中还引入了访问权限 用类定义变量 类的理解和对象的实例化 sizeof 计算类对象的大小 类对象的成员函数在公共代码区 this 指针 对面向过程和面向对象的初步认识 什么,是…

分片集群-搭建

分片集群 高数据量和吞吐量的数据库应用会对单机的性能造成较大压力,大的查询量会将单机的CPU耗尽,大的数据量对单机的存储压力较大,最终会耗尽系统的内存而将压力转移到磁盘IO上。 为了解决这些问题,有两个基本的方法: 垂直扩展和水平扩展。 垂直扩展:增加更多的…

阿里云服务器地域和可用区怎么选择合适?

阿里云服务器地域和可用区怎么选择?地域是指云服务器所在物理数据中心的位置,地域选择就近选择,访客距离地域所在城市越近网络延迟越低,速度就越快;可用区是指同一个地域下,网络和电力相互独立的区域&#…

ROHM常见的电冰箱控制电路图,轻松了解冰箱工作原理

​冰箱是我们日常生活中使用频率非常高的电器,它可以将食物和饮料保存在低温下,以延长它们的保质期。冰箱的工作原理主要基于制冷循环和温度控制。 先看电路图: 1. 单门直冷式电冰箱重锤式控制电路 电路的基本组成:采用重锤式启…

win10安装pytorch全网最好用的教程[2023.5.7更新]

目录 0.关于pytorch a. 什么是 PyTorch ? b. 为何选择 PyTorch ? 1.安装pytorch 1.1确定关联性 1.2下载最新版本的pytorch 1.3.pytorch历史版本下载 1.4 避坑 1.4.1、猜测 1.4.2、验证 1.4.3、解决方案 1.5、检验 0.关于pytorch a. 什么是…

前端学习----webpack入门学习

webpack是前端项目工程化的具体解决方案 主要功能:它提供了友好的前端模块化开发支持,以及 代码压缩(将空格和注释全部消除,变成一行代码)、 处理浏览器端JavaScript的兼容性(只管写高级语法,自动向下兼容。例如ie8不支持let 语法…

【Shell】一天快速入门

1 Shell解析器 Linux提供的shell解析器有6种: /bin/sh /bin/bash /sbin/nologin /bin/csh /bin/dash /bin/tashsh是bash的软连接。 2 Shell脚本 2.1 hello.sh脚本 #!/bin/bash echo hello world!#! 告诉系统这个脚本需要什么解释器来执行; 脚本以#!…

NCNN----Monodepthv2单目深度估计 小米手机部署

题目要求:学习了解单目深度估计模型MonoDepthv2,基于NCNN推理框架部署到小米手机 MonoDepthv2 论文:Digging Into Self-Supervised Monocular Depth Estimation MonoDepthv2 源码:Monodepth2 GitHub 分析: 1&#xff0…

Illustrator如何进行任务自动化之实例演示?

文章目录 0.引言1.动作的录制2.对文件播放动作3.批处理 0.引言 因科研等多场景需要进行绘图处理,笔者对Illustrator进行了学习,本文通过《Illustrator CC2018基础与实战》及其配套素材结合网上相关资料进行学习笔记总结,本文对任务自动化进行…

Cadence技巧总结学习(DRC、Annotate)持续更新~

Cadence技巧总结学习持续更新~ 你还可以再哪里看到这篇文章:知乎 1. 画叉 对于芯片上不用的引脚信号画上号,如下: 按大写X就可以了,或是双脚引脚,在跳出的界面中,Is No Connect上✔。 2. 画线快捷键&#…

【关于C++中----智能指针】

文章目录 一、概念引入二、内存泄漏2.1 内存泄漏概念及其危害2.2 内存泄漏分类2.3 避免内存泄漏 三、智能指针的原理3.1 RAII3.2 像指针一样 四、三类智能指针4.1 auto_ptr4.2 unique_ptr4.3 shared_ptr 五、循环引用和weak_ptr 一、概念引入 在我们日常写代码过程中&#xff…

ARM学习(21)STM32 外设Can的认识与驱动编写

笔者来聊聊can的认识以及can接收数据的驱动编写 1、STM32 Can 外设的认识 Can的特性就不多说了,主要来聊聊can的一些标识符以及收发状态。can有一套收发机制,发送和接收都有硬件缓存,叫邮箱,通过下面的图可以看出,下面…

ESP32学习笔记 -- ESP32-S3 使用外部 PSRAM

ESP32-S3是乐鑫科技推出的一款专为物联网而生的SOC芯片,该芯片同时支持WIFI和BLE蓝牙功能,集成了高性能的Xtensa 32位LX7双核处理器,最高主频可达240MHz。 根据乐鑫官方资料介绍,该芯片内置512KB SRAM片上内存,并且具有45个可编程GPIO管脚和丰富的通信接口。为了更好地扩…

Flask框架之路由与蓝图的使用

路由与蓝图 路由路由概述路由的基本使用查看路由信息url_map对象命令行方式 HTTP请求方法 蓝图概述蓝图的基本使用蓝图的拆分指定蓝图的url前缀蓝图构造URL蓝图静态文件蓝图模板目录 路由 路由概述 在Flask中,路由用于将HTTP请求与特定的Python函数相匹配。通过定义…

K8s-Pod概念、创建及常用命令

文章目录 一、Pod概念1、Pod是什么?2、Pod网络共享实现方式3、Pod存储共享方式4、创建Pod整体流程 二、使用YAML文件定义Pod资源1、Pod资源清单YAML文件书写技巧1. YAML语法格式:2. 配置Linux tab缩进两个空格3. 使用kubectl explain帮助命令 2、创建Pod…