当前位置: 首页 > news >正文

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

从今天我们就开始进入 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。更深入的应用,后面也会分享实际应用这些包的数据分析,欢迎关注!

相关文章:

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

从今天我们就开始进入 Python 数据分析工具的教程。 前段时间数据分析和Python都讲了一点点,但是Python的数据库,讲的少了点,所以接下来就讲讲这些重要的常用数据库吧!!! Python 数据分析绝对绕不过的四个…...

积水内涝监测——埋入式积水终端设备介绍

一、设备概述 埋入式积水终端是针对城市内涝推出的积水信息监测采集设备,采用超声波传感技术,对积水的深度进行精确的测量。产品能够在低温、腐蚀环境下可靠运行本产品特别适用于智慧城市中,对城市道路、社区低洼处的积水进行实时监测上报到…...

Kafka的日志同步

首先介绍下LEO和HW LEO: 即LogEndOffset,表示该副本下次日志记录的偏移量HW:即HighWatermark,高水位线,是所有ISR副本集合中的LEO最小值上图中,如果此时三个副本都在ISR集合中,那么此时他们的LE…...

【Mybatis源码解析】mapper实例化及执行流程源码分析

文章目录简介环境搭建源码解析基础环境:JDK17、SpringBoot3.0、mysql5.7 储备知识:《【Spring6源码・AOP】AOP源码解析》、《JDBC详细全解》 简介 基于SpringBoot的Mybatis源码解析: 1.如何对mapper实例化bean 在加载BeanDefinition时&a…...

分布式文件管理系统(MinIO)

1.去中心化,每个点是对等的关系,通过Ngix对负载做均衡工作。 好处: 能够避免单点故障,将多块硬盘组成一个对象存储服务。 2. 使用纠删编码技术来保护数据,是一种回复丢失和损坏的数据的数学算法,他将数据分…...

Springcloud-配置中心config

一、添加依赖<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId&…...

[项目篇] 音乐播放器开发报告

文章目录1. 项目描述:2. 项目上线展现&#xff1a;3. 项目具体实现&#xff1a;1. 登录2. 注册3.退出系统4.添加音乐4.1前后端交互约定4.2上传文件业务逻辑&#xff1a;4.3创建model包中的music类4.4在MusicMapper接口中&#xff0c;声明insertMusic抽象方法4.5在mybatis包中添…...

Spring Cloud Alibaba--gateway微服务详解之网关(二)

1、网关介绍 上篇对微服务中的nacos注册中心进行集成讲解。nacos主要作用是管理多服务之间复杂关系的组件。微服务是非常庞大且问题突出的架构&#xff0c;HTTP协议具有跨源资源共享 (CORS) Cross- Origin Resource Sharing机制&#xff0c;而处于安全考虑往往前端架构都会对跨…...

Zynq非VDMA方案实现视频3帧缓存输出,无需SDK配置,提供工程源码和技术支持

目录1、前言2、VDMA的不便之处3、FDMA取代VDMA实现视频缓存输出4、Vivado工程详解5、上板调试验证并演示6、福利&#xff1a;工程代码的获取1、前言 对于Zynq和Microblaze的用户而言&#xff0c;要想实现图像缓存输出&#xff0c;多半要使用Xilinx推荐的VDMA方案&#xff0c;该…...

血液透析过滤芯气密性检测装置中的高精度多段压力控制解决方案

摘要&#xff1a;针对目前血液过滤芯气密性检测过程中存在的自动化水平较低、多个检测压力之间需人工切换和压力控制精度较差的问题&#xff0c;为满足客户对高精度和自动化气密性检测的要求&#xff0c;本文提出了相应的解决方案。解决方案的主要特点是全过程的可编程压力控制…...

PDF加密如何批量解除?快来了解下这个方法

在现代办公环境中&#xff0c;PDF文档的使用非常普遍。然而&#xff0c;由于一些安全需求&#xff0c;有时候PDF文档会被加密&#xff0c;使得只有授权人员可以查看或修改它。但是&#xff0c;如果您需要对许多加密PDF文档进行操作&#xff0c;逐个解密这些文档可能非常费时费力…...

C++——哈希4|布隆过滤器

目录 布隆过滤器 完整代码 布隆过滤器应用 布隆过滤器的查找 布隆过滤器删除 布隆过滤器优点 布隆过滤器缺陷 布隆过滤器海量数据处理 布隆过滤器 位图只能映射整形&#xff0c;而对于字符串却无能为力。 把字符串用哈希算法转成整形&#xff0c;映射一个位置进行标…...

python冒号的用法总结

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

面试题整理

面试题整理 一、Java基础 1、Java 语言有哪些特点 简单易学&#xff1b; 面向对象&#xff08;封装&#xff0c;继承&#xff0c;多态&#xff09;&#xff1b; 平台无关性&#xff08; Java 虚拟机实现平台无关性&#xff09;&#xff1b; 支持多线程&#xff08; C 语言…...

C语言深度解剖-关键字(7)

目录 switch case 语句 理解&#xff1a; 补充&#xff1a; 深入理解&#xff1a; default 语句&#xff1a; case语句&#xff1a; 总结&#xff1a; do、while、for 关键字 while for do while 各种死循环方法&#xff1a; while for do while getchar 写在…...

利用JavaScript编写Python内置函数查询工具

最近我开始学习Python编程语言&#xff0c;我发现Python拥有非常丰富的内置函数&#xff0c;可以用来实现各种不同的功能。但是每当我需要查找一个内置函数时&#xff0c;我总是需要联网使用搜索引擎进行查询。这种方式不仅费时费力&#xff0c;而且需要联网&#xff0c;很不方…...

【MySQL进阶】SQL优化

&#x1f60a;&#x1f60a;作者简介&#x1f60a;&#x1f60a; &#xff1a; 大家好&#xff0c;我是南瓜籽&#xff0c;一个在校大二学生&#xff0c;我将会持续分享Java相关知识。 &#x1f389;&#x1f389;个人主页&#x1f389;&#x1f389; &#xff1a; 南瓜籽的主页…...

最新版海豚调度dolphinscheduler-3.1.3配置windows本地开发环境

0 说明 本文基于最新版海豚调度dolphinscheduler-3.1.3配置windows本地开发环境&#xff0c;并在windows本地进行调试和开发 1 准备 1.1 安装mysql 可以指定为windows本地mysql&#xff0c;也可以指定为其他环境mysql&#xff0c;若指定为其他环境mysql则可跳过此步。 我这…...

csv文件完整操作总结

csv文件完整操作总结 1.概述 csv 模块主要用于处理从电子数据表格Excel或数据库中导入到文本文件的数据&#xff0c;通常简称为 comma-separated value &#xff08;CSV&#xff09;格式因为逗号用于分离每条记录的各个字段。 2.读写操作 2.1.测试数据 创建一个test.csv文…...

时间序列预测--基于CNN的股价预测(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 时间序列预测有很多方法&#xff0c;如传统的时序建模方法ARIMA、周期因子法、深度学习网络等&#xff0c;本次实验采用最简单的…...

Dubbo与Spring Cloud优缺点分析(文档学习个人理解)

文章目录核心部件1、总体框架1.1 Dubbo 核心部件如下1.2 Spring Cloud 总体架构2、微服务架构核心要素3、通讯协议3.1 Dubbo3.2 Spring Cloud3.3 性能比较4、服务依赖方式4.1 Dubbo4.2 Spring Cloud5、组件运行流程5.1 Dubbo5.2 Dubbo 运行组件5.3 Spring Cloud5.4 Spring Clou…...

单元测试工具——JUnit的使用

⭐️前言⭐️ 本篇文章主要介绍单元测试工具JUnit的使用。 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评论区留言 &#x1f349;博客中涉及源码…...

Linux_基本权限

Linux入门第二篇已送达&#xff01; Linux_基本权限shell外壳权限Linux的用户分类角色划分Linux的文件文件类型查看权限目录的权限默认权限粘滞位shell外壳 为了保护操作系统&#xff0c;用户的指令不能由操作系统直接进行执行&#xff0c;需要一个中间者&#xff0c;比如Linu…...

3、JavaScript面试题

1, Js数据类型有哪些&#xff1f;数值、字符串、布尔、undefined、null、数组、对象、函数2, 引用类型和值类型的区别- 值类型存在于栈中, 存取速度快 引用类型存在于堆,存取速度慢- 值类型复制的是值本身 引用类型复制的是指向对象的指针- 值类型结构简单只包含基本数据, 引用…...

YUV图像

YUV的存储方式UV格式有两大类&#xff1a;planar和packed。对于planar的YUV格式&#xff0c;先连续存储所有像素点的Y&#xff0c;紧接着存储所有像素点的U&#xff0c;随后是所有像素点的V。对于packed的YUV格式&#xff0c;每个像素点的Y,U,V是连续交替存储的。YUV的采样主流…...

.net6API使用AutoMapper和DTO

AutoMapper&#xff0c;是一个转换工具&#xff0c;说到AutoMapper时&#xff0c;就不得不先说DTO&#xff0c;它叫做数据传输对象(Data Transfer Object)。 通俗的来说&#xff0c;DTO就是前端界面需要用的数据结构和类型&#xff0c;而我们经常使用的数据实体&#xff0c;是数…...

IO知识整理

IO 面向系统IO page cache 程序虚拟内存到物理内存的转换依靠cpu中的mmu映射 物理内存以page&#xff08;4k&#xff09;为单位做分配 多个程序访问磁盘上同一个文件&#xff0c;步骤 kernel将文件内容加载到pagecache多个程序读取同一份文件指向的同一个pagecache多个程…...

【正点原子FPGA连载】第十三章QSPI Flash读写测试实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第十三章QSPI Fl…...

深入理解mysql的内核查询成本计算

MySql系列整体栏目 内容链接地址【一】深入理解mysql索引本质https://blog.csdn.net/zhenghuishengq/article/details/121027025【二】深入理解mysql索引优化以及explain关键字https://blog.csdn.net/zhenghuishengq/article/details/124552080【三】深入理解mysql的索引分类&a…...

LeetCode 141. 环形链表

原题链接 难度&#xff1a;easy\color{Green}{easy}easy 题目描述 给你一个链表的头节点 headheadhead &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 nextnextnext 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的…...

怎么做提卡密网站万游/站长工具在线

有些银行推销的信用卡分期或贷款分期还款是这么计算的&#xff1a; A: 贷款额 x: 名义月利率或者所谓的每月手续费 m: 还款期限&#xff0c;单位月 每月应还&#xff1a; (A x*A*m)/m 这个还款额把本金和利息平均在了每个月里&#xff0c; 但是仔细想想是有问题的&#xff1a; …...

网页前端开发技术/网站是怎么优化推广的

18年国庆&#xff0c;栈长分享了一次我的真实相亲经历&#xff1a;《一个程序员的国庆血泪相亲史&#xff0c;惨败而归…》&#xff0c;大家反响爆蓬。有的现在还在后台留言鼓励我&#xff0c;或者问我有没有找到女朋友之类的&#xff0c;不用担心这事啦&#xff0c;那都是陈年…...

有什么网站是做投资的/关键词的选取原则有

基本概念 在组成原理以及体系结构中经常遇到 CPU Cycle(CPU 周期)、Instruction Cycle(指令周期)、Clock Cycle(时钟周期)这些概念&#xff0c;这篇文章详细拆解一下他们之间联系与区别。废话不多说&#xff0c;直接开门见山给出对应的概念。 CPU Cycle&#xff1a;CPU 内部的…...

手机网站建设比较好的公司/百度指数批量

面试官的问题层出不穷&#xff0c;我们在面试的时候总会被问到一些没接触的东西&#xff0c;所以就需要一个比较全面的面试复习&#xff0c;今天我就分享一个Java全能面试通关手册&#xff0c;希望能在面试方面帮助到大家。 大厂面试题目录阿里一面1.说⼀下ArrayList和LinkedL…...

鞍山网站制作人才招聘/企业营销策划书范文

一般在需要调试的文件加入下面代码即可 ################ _DEBUG True ... if _DEBUG True import pdb pdb.set_trace() ################ 之后执行文件&#xff0c;就会进入调试状态&#xff0c;常用调试命令和gdb下基本一样,相当好用 如 c (continue) &#xff0c;n(next)&…...

青岛网站建设制作/seo查询工具

之前在用Django搭web后端的时候&#xff0c;需要做个小功能就是&#xff1a;用户登陆之后长时间未操作会超时自动退出。 并且当用户做某些事情&#xff0c;比如下载文件&#xff0c;留言&#xff0c;发送email 都需要先检验当前用户还是否处于已登陆状态。 要是在每次事件前面都…...