学Python不会不知道NumPy计算包吧,带你五分钟看懂NumPy计算包

news2025/1/11 18:44:04

从今天我们就开始进入 Python 数据分析工具的教程。

前段时间数据分析和Python都讲了一点点,但是Python的数据库,讲的少了点,所以接下来就讲讲这些重要的常用数据库吧!!!
在这里插入图片描述

Python 数据分析绝对绕不过的四个包是 Numpy、scipy、pandas 还有 matplotlib。

NumPy 是 Python 数值计算最重要的基础包,大多数提供科学计算的包都是用 numPy的数组作为构建基础。专门用来处理矩阵,它的运算效率比列表更高效。

scipy 是基于 numpy 的科学计算包,包括统计、线性代数等工具。

pandas 是基于 numpy 的数据分析工具,能够快速的处理结构化数据的大量数据结构和函数。

matplotlib 是最流行的用于绘制数据图表的 Python 库。

本文先分享 NumPy 包。

NumPy 的 ndarray:多维数组对象

numpy 的数据结构是 n 维的数组对象,叫做 ndarray。 可以用这种数组对整块数据执行一些数学运算,其语法跟标量元素之间的运算一样。

创建并操作多维数组:

在这里插入图片描述

ndarray 对象中所有元素必须是相同类型的,每个数组都有一个 shape 和 dtype。

  • shape :表示各维度大小的元组
  • dtype :说明数组数据类型的对象

在这里插入图片描述

创建 ndarray:一种多维数组对象

创建数组最简单的办法就是使用 array 函数,它接受一切序列型对象(包括其它数组),然后产生一个新的 NumPy 数组(含有原来的数据)。

np.array 会尝试为新建的这个数组推断出一个较为合适的数据类型,这个数据类型保存在一个特殊的 dtype 对象中。

zerosones 也分别可以创建指定大小的全 0 或全 1 数组,empty 可以创建一个没有任何具体值的数组(它返回的都是一些未初始化的垃圾值):
在这里插入图片描述

arangePython 内置函数 range 的数组版,np.arange 返回间隔均匀的一些值。

ndarray 的数据类型

在这里插入图片描述

dtype(数据类型)是一个特殊的对象,它含有 ndarray 将一块内存解释为特定数据类型所需的信息。

需要知道你所处理的数据的大致类型是浮点数、复数、整数、布尔值、字符串, 还是普通的 python 对象。当需要控制数据在内存和磁盘中的存储方式时,就得了解如何控制存储类型。

可通过 ndarrayastype 方法显示地转换其 dtype:
在这里插入图片描述

若将浮点数转换成整数,则小数部分将会被截断。

若某字符串数组表示的全是数字,可用 astype 将其转换为数值形式:
在这里插入图片描述

这里没写 np.float64 只写了 float,但是 NumPy 会将 Python 类型映射到等价的
dtype 上。

数组的 dtype 的另一个用法:

在这里插入图片描述

int_array 变成了和 calibers 一样的浮点型数组
用简洁类型的代码表示 dtype:
在这里插入图片描述

u4(unit32):无符号的 32 位(4 个字节)整型。

调用 astype 无论如何都会创建出一个新的数组(原始数据的一份拷贝)。

浮点数只能表示近似的分数值,在复杂计算中可能会积累一些浮点错误,因此比较操作只在一定小数位以内有效。

数组和标量之间的运算

数组:可对数据执行批量运算(不用编写循环即可)。这通常叫做矢量化
(vectorization)。

  • 大小相等的数组之间,它们之间任何的算术运算都会应用到元素级(每个元素都做这个运算了),数组与标量的算术运算也是。
  • 不同大小的数组之间的运算叫做广播(broadcasting)。

基本的索引和切片

在这里插入图片描述

数据不会被复制,任何修改都直接改了原数组。如果仅是要一份副本,则用 .copy()。
在这里插入图片描述

对二维数组单个元素的索引:
在这里插入图片描述

这两种方式等价。

若 arr2d[2],则输出的是一维数组[7,8,9]。

223 的数组(2 组 2 行 3 列):
在这里插入图片描述

切片索引

在这里插入图片描述

布尔型索引

在这里插入图片描述

需要先引入:from numpy.random import randn

或将代码改成:data = np.random.randn(7, 4)

在这里插入图片描述

布尔型数组的长度必须跟被索引的轴长度一致。每个名字对应 data 数组一行。对条件进行否定的两种方式:

在这里插入图片描述
在这里插入图片描述

组合应用多个布尔条件,可使用&、|等布尔算术运算符:

在这里插入图片描述

通过布尔型索引选取数组中的数组,将总是创建数据的副本,即使返回一模一样的数组也是一样。

通过布尔型数组设置值:
在这里插入图片描述

通过一维布尔数组设置整行或列的值:
在这里插入图片描述

花式索引

指利用整数数组进行索引。

np.empty((8,4))

Return a new array of given shape and type, without initializing entries. for i in range(8):
arr[i] = i

Return an object that produces a sequence of integers from start (inclusive) to stop (exclusive) by step.

在这里插入图片描述

为了以特定顺序选取行的子集,只需传入一个用于指定顺序的整数列表或
ndarray,使用负数索引会从末尾开始选取行(最后一行是 -1)。一次传入多个索引组,返回一个一维数组:

在这里插入图片描述

取整列的两种方法,相当于给列排了顺序:

在这里插入图片描述

花式索引跟切片不一样,总是将数据复制到新数组中。

数组转置和轴对换

转置返回的是源数据的视图,不进行任何复制操作。数组有 transpose 方法,还有一个 T 属性来完成转置:

在这里插入图片描述

高维数组

Transpose 要一个轴编号:
在这里插入图片描述

arr 是 2 组 2 行 4 列的数组,transpose 的参数表示 shape 的形状,对于这个例子来说,即 2[0]、2[1]、4[2],transpose(1,0,2)转置后变为 2[1]、2[0]、4[2],看起来仍是 2 组 2 行 4 列的形状,但数组内的元素经过转换后索引已经改变, 也要遵循(1,0,2)的顺序。如转置前的数组 arr[0,1,0]索引值为 4,转置后的数组 arr’[1,0,0],索引值才为 4。其它同理。

ndarray 的 swapaxes 方法接受一对轴编号且返回源数据的视图:

在这里插入图片描述

转置后的数组 arr.T 为 4[2] 组 2[1] 行 2[0] 列数组,swapaxes(1,2)就是将第二个
维度(中括号内数字)和第三个维度交换,即转换为 2 组 4 行 2 列。

通用函数:快速的元素级数组函数

通用函数(即 ufunc)是一种对 ndarray 中的数据执行元素级运算的函数,就是一些简单函数。

利用数组进行数据处理

用数组表达式代替循环的做法,通常被称为矢量化。NumPy 数组将多种数据处理任务表述为数组表达式。

在这里插入图片描述

在这里插入图片描述

np.meshgrid 函数接受两个一维数组,并产生两个二维矩阵(对应于两个数组中所有的(x, y)对。

将条件逻辑表述为数组运算

np.wherea 函数是三元表达式 x if condition else y 的矢量化版本。
在这里插入图片描述

np.where 的第二个和第三个参数不必是数组,传递给 where 的数组大小可以不相等,甚至可以是标量值。在数据分析工作中,where 通常用于根据另一个数组而产生一个新的数组。
在这里插入图片描述

用 where 表述出更复杂的逻辑:(where 的嵌套)

在这里插入图片描述
在这里插入图片描述

用于布尔型数组的方法
有两个方法 any 和 all。

在这里插入图片描述

排序

多维数组可以在任何一个轴向上进行排序,只需将轴编号传给 sort:

在这里插入图片描述

顶级方法 np.sort 返回的数组已排序的副本,就地排序则会修改数组。

唯一化以及其他的集合逻辑

在这里插入图片描述

np.unique 找出数组中的唯一值并返回已排序的结果。
在这里插入图片描述

np.in1d 用于测试一个数组的值在另一个数组的情况。

随机数生成

numpy.random 模块多了用于高效生产多种概率分布的样本值的函数(用来生成大量样本值)。


到这里,numpy 的基础就讲解的差不多了,接下来将会讲解 pandas 和 matplotlib。更深入的应用,后面也会分享实际应用这些包的数据分析,欢迎关注!

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

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

相关文章

数据库常用命令

文章目录1. 数据库操作命令1.进入数据库2.查看数据库列表信息3.查看数据库中的数据表信息2.SQL语句命令1. 创建数据表2. 基本查询语句3. SQL排序4. SQL分组统计5. 分页查询6. 多表查询7.自关联查询8.子查询1. 数据库操作命令 1.进入数据库 mysql -uroot -p2.查看数据库列表信…

PDF怎么转换成Word?两种PDF免费转Word方法推荐

不知道你们有没有发现,我们在网上下载的很多资料都是PDF格式的,尽管PDF文件也可以通过专门的PDF编辑器来编辑,但是PDF文档作为版式文档,编辑起来还是存在很多局限性,所有当我们需要大量编辑修改文档的时候,…

网络编程套接字之TCP

文章目录一、TCP流套接字编程ServerSocketSocketTCP长短连接二、TCP回显服务器客户端服务器客户端并发服务器UDP与TCP一、TCP流套接字编程 我们来一起学习一下TCP socket api的使用,这个api与我们之前学习的IO流操作紧密相关,如果对IO流还不太熟悉的&am…

Springboot 我随手封装了一个万能的导出excel工具,传什么都能导出

前言 如题,这个小玩意,就是不限制你查的是哪张表,用的是什么类。 我直接一把梭,嘎嘎给你一顿导出。 我知道,这是很多人都想过的, 至少我就收到很多人问过我这个类似的问题。 我也跟他们说了,但…

python冒号的用法总结

一维数组 1. 单个冒号的情况 1.1 写完整的情况下 单个冒号的情况下,对数组的遍历操作是从前向后操作。如:arr[a:b] ,冒号前的a含义是从a开始遍历,冒号后的b含义是到b截止(不包括b)。 arr [1, 2, 3, 4,…

Qt扫盲-QMake 语言概述

QMake 语言概述一、概述二、变量三、替换函数四、测试函数一、概述 这里主要就是记录一下如何使用 qmake Manual,里面关于我对 qmake的理解,以及如何配置这个 qt 工程文件,通过配置工程文件,来构建出,APP,…

如何在Github上配置ssh key的密钥

Step0 : 解释说明 git使用SSH配置, 初始需要以下三个步骤 使用秘钥生成工具生成rsa秘钥和公钥将rsa公钥添加到代码托管平台将rsa秘钥添加到ssh-agent中,为ssh client指定使用的秘钥文件 Step 1: 核验本地主机是否已经存在ssh密钥。(若id_rs…

ChatGPT之文章生成

文章目录介绍激励设计Prompt Design故障调整Troubleshooting分类Classification提高分类器的效率生成对话内容转化翻译转化总结实际问答插入文本编辑模式介绍 ChatGPT功能很强大,它可以根据你给出的模板和文本进行文本补全,最好的探索方式就是使用我们给…

数据预处理(无量纲化、缺失值、分类特征、连续特征)

文章目录1. 无量纲化1.1 sklearn.preprocessing.MinMaxScaler1.2 sklearn.preprocessing.StandardScaler2. 缺失值3. 分类型特征4. 连续型特征数据挖掘的五大流程包括:获取数据数据预处理特征工程建模上线 其中,数据预处理中常用的方法包括数据标准化和归…

3分钟学会图新地球图源制作详细教程

图新地球图源制作 1.资源准备 (1) 准备一份图新地球支持的lrc格式的图源; (2) 安装图新地球 (LSV)软件和奥维omap软件 。 2.操作步骤 (1) 用记事本打开lrc格式的文件(图①),同时用奥维软件…

Unity 多语言 轻量高效的多语言工具集 LanguageManager

效果展示 支持excel导入自动化 组件化 更方便 也提供直接获取多语言的接口 没有挂 LanguageText的对象也可以获取多语言文本内容 支持 Format接口 可以传递N个参数进来组装多语言 支持首次系统语言自测 支持语言切换后本地自动保存配置 支持实时切换 同步刷新所有UI 容错处…

Maven:在Intellij idea的使用

MavenIntellij idea配置MavenIntellij idea创建Maven项目Java项目的创建Web项目的创建Intellij idea执行Maven命令JavaWeb项目转为Maven项目遇到的问题解决了解到Maven的基础知识后,接下来,简单介绍Maven在Intellij idea的使用( 以 IntelliJ …

在线开会,来开开圆桌会议吧~

圆桌会议应用场景:适合内部培训、部门会议亦或是头脑风暴等较为轻松的场景,有兴趣的朋友可以联系我来测试哦~~ 上图: 图:圆桌会议应用截图 在圆桌布局之下,企业可以将每一位参会者和座位绑定,1:1模拟线下圆…

微信中如何接入机器人才比较安全(不会收到警告或者f号)之第三步正式接入

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。 前言 前面两篇文章分别介绍了下chatgpt接入方式: 微信中如何接入chatgpt机器人才比较安全(不会收到警告或者f号)之第一步登录微信 微信中如何接入chatgpt机器人才比较安全(不会收到警告或者f号)之第二步注入dll文件…

Spring 底层原理与解析 - 容器接口

Spring 底层原理与解析 - 容器接口 BeanFactory 能做哪些事 BeanFactory 与 ApplicaiotnContext 到底是谁提前做完了对象的加载 在之前的一篇关于 Spring 的文章Spring IoC 与容器的初始化中提到过,BeanFactory 接口与 ApplicationContext 接口之间的关系 可以看…

MySQL作业四

学生表:Student (Sno, Sname, Ssex , Sage, Sdept) 学号,姓名,性别,年龄,所在系 Sno为主键 课程表:Course (Cno, Cname,) 课程号,课程名 Cno为主键 学生选课表:SC (Sno, Cno, Score)…

编译链接实战(8)认识elf文件格式

🎀 关于博主👇🏻👇🏻👇🏻 🥇 作者简介: 热衷于知识探索和分享的技术博主。 💂 csdn主页::【奇妙之二进制】 ✍️ 微信公众号:【Linux …

FreeRTOS的列表和列表项

目录 列表和列表项的简介 列表和列表项的关系 列表相关API函数介绍 函数vListInitialiseI() 函数vListInitialiseItem() 函数vListInsert() 函数vListInsertEnd() 函数uxListRemove() 列表和列表项的简介 列表是FreeRTOS中的一个数据结构,概念上和链表有点类…

电脑的安全模式安全吗?如何进入安全模式?

“怎么进安全模式?”这条留言成功引起了驱动哥的注意。 在遇到电脑蓝屏、黑屏等系统问题的时候,如何在更安全且不损失电脑文件的情况下修复故障?系统早已为大家准备好了相应的修复策略。 没错!电脑也有属于自己的Plan B——安全…

我工作5年测试才8K,应届生刚毕业就拿16K?凭什么

我从事手工测试五年了,还拿着8K的死工资,家里还几张嘴需要喂养,我很累,也很迷茫…【某个粉丝跟我的诉说】 为什么手工测试会迷茫呢? 自动化测试、性能测试倒是不会迷茫。 我认为手工测试的迷茫基于两个原因&#xf…