【数据分析 - 基础入门之NumPy⑤】NumPy基本操作 - 二

news2024/9/25 13:24:25

知识目录

  • 前言
  • 一、聚合函数
  • 二、矩阵操作
    • 2.1 算术运算
    • 2.2 线性代数
    • 2.3 其他数学操作
  • 三、广播机制
    • 3.1 广播的原则
    • 3.2 案例
  • 四、排序
  • 五、文件操作
  • 结语
  • 相关导读

前言

大家好!本期给大家带来的是【数据分析 - 基础入门之NumPy⑤】NumPy基本操作 - 二,收录于作者的【 Python 数据分析】专栏,正在火热🔥更新中……

每日金句分享:背上背包,带上行囊,去你的世界旅行。』—— 「柯」

下面让我们进入正题吧。

一、聚合函数

NumPy 中提供了许多内置函数,用于快速达成一些功能。

函数功能
np.sum()求和
np.mean()平均值
np.average()平均值
np.min()最小值
np.max()最大值
np.std()标准差
np.var()方差
np.median()中位数
np.power()幂运算
np.sqrt()开方
np.argmin()最小值的下标
np.argmax()最大值的下标
np.log()对数
np.exp()指数
np.argwhere按条件查找

下面是一些使用示例:

n1 = np.array([
    [1,3,4],
    [3,2,9],
    [7,1,0]
])
print(np.sum(n1)) # 求和
print(np.min(n1)) # 最小值
print(np.max(n1)) # 最大值
print(np.mean(n1)) # 平均值
print(np.average(n1)) # 平均值
print(np.median(n1)) # 中位数

print(np.argmin(n1)) # 最小值对应下标
print(np.argmax(n1)) # 最大值对应下标
print(np.std(n1)) # 标准差
print(np.var(n1)) # 方差
print(np.power(n1,2)) # 幂运算
print(np.argwhere(n1 > 2)) # 按条件查找并返回位置

二、矩阵操作

2.1 算术运算

算术运算指的是和标量之间的运算,ndarray 数组可以直接和标量进行各种算术运算,例如:+、-、*、/、%、//(整除)、**(次方)。

# 矩阵算术运算
n1 = np.random.randint(0,10,(2,3))
print(n1)
n2 = np.random.randint(0,10,(2,3))
print(n2)
n1 * n2

2.2 线性代数

线性代数中矩阵的操作主要包括:矩阵乘法、求逆矩阵、求矩阵的行列式、求矩阵的秩等。

函数功能
np.dot()矩阵乘法
np.linalg.inv()求逆矩阵
np.linalg.det()求矩阵的行列式
np.linalg.matrix_rank()求矩阵的秩

下面是具体示例:

# 线性代数
n1 = np.random.randint(0,10,(2,3))
print(n1)
n2 = np.random.randint(0,10,(3,2))
print(n2)
print(np.dot(n1,n2)) #
n3 = np.random.randint(0,10,(2,2))
print(np.linalg.inv(n3)) # 求逆:Last 2 dimensions of the array must be square,数组的最后 2 个维度必须是正方形的
print(np.linalg.det(n3))
print(np.linalg.matrix_rank(n3))

2.3 其他数学操作

NumPy 中还有一些其他数学操作,具体可以参考:NumPy中文网。

三、广播机制

如果两个数组 a 和 b 形状相同,即满足 a.shape == b.shape ,那么算术运算可以对应元素进行;如果形状不同,NumPy会自动匹配广播机制,广播 (Broadcast) 是 numpy 对不同形状 (shape) 的数组进行数值计算的方式。

当运算中的 2 个数组的形状不同时,numpy 将自动触发广播机制。

3.1 广播的原则

  • <1> 如果两个数组的最后一个维度(trailing dimension,即 从末尾开始算起的维度)的维数相同 ,(在二维数组中表现为列数相同)。
  • <2> 两个数组行数相同,其中一方列维度为1,则认为它们是广播兼容的。广播会在缺失和(或)长度为1的维度上进行。

pandas 没有广播机制。

3.2 案例

# (1) 最后维度维数相同
n1 = np.array([
    [1,4,3],
    [9,1,5]
])
n2 = [
    [3,6,1]
]
print(n1 + n2)
# (2) 其中一个维度为1
n3 = np.array([
    [1],
    [3]
])
n1 + n3

四、排序

对数组的排序是同一个方法,两种方式:如果使用 np.sort() ,不改变原数组;如果使用 n.sort() ,n 是一个数组,会改变原数组。

print(n1)
# 不改变原数组
np.sort(n1)
# 改变原数组
n1.sort()
print(n1)

五、文件操作

对文件的操作主要有保存文件和加载文件,下面分别介绍。

函数功能
np.save()保存 ndarray 到一个 npy 文件
np.savez()保存 ndarray 到一个 npz 文件
np.savetxt()保存 ndarray 到一个 txt/csv 文件
np.load()读取 npy、npz 文件
np.loadtxt()读取 txt、csv 文件

结语

本篇文章主要介绍了 NumPy 的基本操作,最重要的是要理解 NumPy 中的广播机制以及常用函数。

🍻 我是向阳花花花花,在学习的路上一直前行,期待与你一起进步。~ 🍻

🔥 如果文中有些地方不清楚的话,欢迎联系我,我会给大家提供思路及解答。🔥

相关导读

文章直达链接
上期回顾【数据分析 - 基础入门之NumPy④】- NumPy基本操作 - 一
下期预告【数据分析 - 基础入门之NumPy⑥】- NumPy案例巩固强化

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

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

相关文章

t113i不查网线启动,内核[ cut here ]崩溃问题解决

前言 环境介绍&#xff1a; 1.编译环境 Ubuntu 18.04.5 LTS 2.SDK T113-i_v1.0 3.单板 迅龙TLT113-EVM-A1.1-000 自制底板 # 一、现象 插上网线启动&#xff0c;内核打印信息正常 不插网线启动&#xff0c;内核存在CPU崩溃打印[ cut here ] 二、问题根因 根据错误…

超详细JDK下载与安装步骤

目录 一、创建软件文件夹 二、安装软件 三、配置环境变量 四、 测试环境变量 一、创建软件文件夹 c盘目录创建devloop/Java/jdk1.8文件夹和devloop/Java/jre1.8文件夹 二、安装软件 打开jdk安装包 选择下一步 三、配置环境变量 右击此电脑&#xff0c;点击属性 点击高级系…

leetcode 513. 找树左下角的值

2023.7.7 题意要求是最底层的节点&#xff0c;则用层序遍历是最合适的&#xff0c;每一层遍历将元素放入一个数组中&#xff0c;等到最后一层遍历完之后&#xff0c;取这个数组的第一个元素即为所求节点值。 下面上代码&#xff1a; class Solution { public:int findBottomLe…

OpenCV在一张图片上以不同的透明度添加另一张图片

// 包含必要的OpenCV头文件 #include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv;// 定义全局变量 #define WINDOW_NAME "线

ACL 2023|如何智能生成吸引人又符合实际的标题?

夕小瑶科技说 原创 作者 | 小戏、Python 标题生成&#xff0c;乍一看似乎并不是一个复杂的任务&#xff0c;要数据简单的爬虫就可以获得许多标题-文本对&#xff0c;要评价通过用户点击与浏览的次数就多少可以区分“好标题”与“坏标题”&#xff0c;万事俱备使用一些经典的监…

Tomcat安装与配置(详细教程)

一、安装Tomcat服务器 1.下载地址&#xff08;Tomcat官网&#xff09;http://tomcat.apache.org/ 2.将下载的zip文件解压到指定的目录&#xff08;例如&#xff1a;D盘&#xff0c;目录不要有中文&#xff09; D:\apache-tomcat-9.0.43 二、配置Tomcat环境变量 &#xff08;…

Scrap爬虫框架集成Selenium来解析动态网页

1、爬虫项目单独使用scrpay框架的不足 当前网站普遍采用了javascript 动态页面&#xff0c;特别是vue与react的普及&#xff0c;使用scrapy框架定位动态网页元素十分困难&#xff0c;而selenium是最流行的浏览器自动化工具&#xff0c;可以模拟浏览器来操作网页&#xff0c;解…

金融时间序列预测方法合集:CNN、LSTM、随机森林、ARMA预测股票价格(适用于时序问题)、相似度计算、各类评判指标绘图(数学建模科研适用)

项目设计集合&#xff08;人工智能方向&#xff09;&#xff1a;助力新人快速实战掌握技能、自主完成项目设计升级&#xff0c;提升自身的硬实力&#xff08;不仅限NLP、知识图谱、计算机视觉等领域&#xff09;&#xff1a;汇总有意义的项目设计集合&#xff0c;助力新人快速实…

Junit 快速入门

✏️作者&#xff1a;银河罐头 &#x1f4cb;系列专栏&#xff1a;JavaEE &#x1f332;“种一棵树最好的时间是十年前&#xff0c;其次是现在” 目录 为什么学 JunitJunit 相关技术注解TestDisabledBeforeAll, AfterAllBeforeEach, AfterEach 参数化单参数CSV 获取参数多参数方…

华为云书库《Spring Boot2系列实战教程》电子书

华为开发者大会PaaS生态电子书推荐&#xff0c;助你成为了不起的开发者&#xff01; 处理Spring Boot 常见企业级需求&#xff0c;《Spring Boot2系列实战教程》来了&#xff01; 点击下方进入华为云官网 https://auth.huaweicloud.com/authui/login.html?localezh-cn&…

MySQL基础知识(一)-超详细Windows系统安装MySQL详细教程

1.简介 原计划&#xff0c;今天这篇想要给小伙伴们讲解一下python操作mysql数据库&#xff0c;但是由于近期换了一台新的电脑&#xff0c;所以一看mysql数据库都没安装&#xff0c;所有才有了这篇文章。尽管网上不乏此类型的文章&#xff0c;但是刚好自己要安装&#xff0c;所以…

C语言 base32与base64加解密

概述 Base32、Base64编码就是分别用32个、64个可打印字符表示二进制数据。 一、Base32规则 32 2^5&#xff0c;所以需要5 Bit来表示一个base32字符。一个字节8 Bit&#xff0c;5和8的最小公倍数是40。编码的过程中&#xff0c;以5个字节为一组转为8个base32字符&#xff0c;不…

python OA流程图xml文件画图 graphviz的使用

下面的公文发文的流程图&#xff0c;虽然流程环节有坐标信息&#xff0c;但graphviz设置pos参数效果也不是太好 问题在于如何为流程环节设置绝对坐标 D:\Study\myproject\Python_auto_office\flow_report\utils\draw_image.py 通过xml流程文件绘制流程图 import graphviz …

[期末网页作业]-小米官网(html+css+js)

今天&#xff0c;我非常高兴地向大家展示我的最新成果——仿写小米官网的页面。经过一个漫长的期末考试季节&#xff0c;我终于完成了这个耗费了许多心血的项目。在这个过程中&#xff0c;我付出了大量的时间和努力来确保每一个细节都尽善尽美。 首先&#xff0c;我注重了页面的…

【BMS】电池能量管理:充电管理(含关键参数)

&#x1f50b; 电池包能量管理&#xff1a;充电管理&#xff08;含关键参数&#xff09; &#x1f50b; 零、友情提示&#xff1a;若时间有限或者有基础的同学可直接跳至第四章查看一、以通信为基础1.典型电路2.软件时序 二、充电过程&#xff08;常规&#xff09;️1.充电参数…

【剑指offer】6.二叉树的下一个结点(java)

文章目录 二叉树的下一个结点描述输入描述&#xff1a;返回值描述&#xff1a;示例1示例2示例3示例4思路完整代码 二叉树的下一个结点 描述 给定一个二叉树其中的一个结点&#xff0c;请找出中序遍历顺序的下一个结点并且返回。注意&#xff0c;树中的结点不仅包含左右子结点…

JAVA leetCode 13. 罗马数字转整数

方法一&#xff1a;1.通过hashmap来保存字符与数字之间的关系 2&#xff1a;根据罗马数字转整数的特点&#xff0c;当前字符比右边的字符小并且不是最后一个字符就说明在计算总数时该字符的符号是负&#xff0c;反之即为正 代码展示&#xff1a; public static int romanToIn…

Spring Boot中的Hibernate是什么,如何使用

Spring Boot中的Hibernate是什么&#xff0c;如何使用 Hibernate是一个流行的Java ORM框架&#xff0c;它提供了一种将Java对象映射到关系数据库表的方法。Spring Boot集成了Hibernate&#xff0c;使得在开发Web应用程序时可以轻松地使用Hibernate操作数据库。本文将介绍Sprin…

记一次阿里云被挖矿处理记录

摘要 莫名其妙的服务器就被攻击了&#xff0c;又被薅了羊毛&#xff0c;当做免费的挖矿劳动力了。 一、起因 上班&#xff08;摸鱼&#xff09;好好的&#xff0c;突然收到一条阿里云的推送短信&#xff0c;不看不知道&#xff0c;两台服务器被拉去作为苦力&#xff0c;挖矿去…

核磁共振常用的文件格式介绍:NIfTI volume 格式 (*.nii), GIFTI 格式 (*.gii), CIFTI 格式 (*.nii)

核磁共振常用的文件格式介绍:NIfTI volume 格式, GIFTI 格式, CIFTI 格式 NIfTI volume 格式 (*.nii)GIFTI 格式 (*.gii)CIFTI 格式 (*.nii)自定义工作台 (wb_view) 文件:Scene file文件 (*.scene)规格文件 (*.spec)Spec file (*.border)Foci (*.foci)Trajectory file (*.t…