【数据分析:工具篇】NumPy(1)NumPy介绍
【数据分析:工具篇】NumPy(1)NumPy介绍
- NumPy介绍
- NumPy的特点
- 数组的基本操作
- 创建数组
- 索引和切片
- 数组运算
NumPy介绍
NumPy(Numerical Python)是Python的一个开源的科学计算库,它主要用于处理大规模的多维数组以及矩阵操作。NumPy是在Python中进行科学计算的基础库,许多其他的科学计算库都是基于NumPy进行开发的,包括Scipy、Pandas等。
NumPy是Python中非常重要的科学计算库之一,它提供了丰富的多维数组对象、高效的向量化计算、数组操作、数组切片和索引、广播机制、矩阵计算、随机数生成、通用函数、数学函数和统计函数、数据类型转换等各种强大的功能,可以方便地进行数据处理、科学计算、统计分析和机器学习等任务。如果你想要在Python中进行数据科学或机器学习的任务,那么学习和掌握NumPy是非常有必要的。
NumPy的核心是多维数组(ndarray),它可以用来表示向量、矩阵以及更高维的数组。NumPy中的数组操作都是在底层以C语言的形式实现的,因此它非常高效。
NumPy的安装非常简单,可以通过pip命令来安装,例如:
pip install numpy
安装完成之后,就可以在Python中导入NumPy:
import numpy as np
NumPy的特点
NumPy具有以下特点一些:
- 多维数组对象:NumPy最主要的特点是其多维数组对象ndarray,这种数组可以存储任意类型的数据,并且可以进行高效的数组计算。这种数组可以在一些数据分析和科学计算任务中替代传统的Python列表,因为它的存储和计算效率更高。
- 内置的数据类型:NumPy支持多种数据类型,包括整型、浮点型、复数、布尔型等,可以根据不同的需求进行选择。
- 随机数生成:NumPy中的random模块提供了各种随机数生成函数,例如rand()、randn()、randint()等,可以生成各种不同类型的随机数,这些随机数在模拟、实验和数据分析等任务中都非常有用。
- 数据类型转换:NumPy提供了各种数据类型转换函数,可以将数组从一种数据类型转换成另一种数据类型,例如astype()函数可以将数组的数据类型转换成指定的数据类型,这些函数在数据预处理和清洗中经常使用。
- 方便的数组索引和切片:NumPy支持各种不同的数组切片和索引方式,包括基于整数和布尔值的索引方式,以及基于轴向的索引方式,这使得数据的选择和处理变得更加方便和高效。
- 数组操作:NumPy提供了许多用于操作数组的函数,例如:reshape、concatenate、split、flatten等等。这些函数使得数组的操作变得更加容易和灵活。
- 通用函数:NumPy中的ufunc(通用函数)可以对数组进行逐元素操作,例如exp()、log()、sin()、cos()等等,这些函数在数学计算和科学计算中都经常使用。
- 数学函数和统计函数:NumPy提供了各种数学函数和统计函数,例如sum()、mean()、median()、std()、var()等等,可以方便地计算数组的各种统计量和数学函数值。
- 广播机制:广播机制是NumPy中一种非常重要的特点,它可以使得不同形状的数组进行计算时,它会自动将较小的数组进行复制和扩展,以适应较大的数组形状,避免了显式地进行循环操作,从而使得数组之间的计算变得更加方便和高效。
- 文件输入输出:NumPy提供了各种文件输入输出函数,例如load()、save()、savetxt()等,可以方便地读取和保存多维数组数据,这些函数对于数据分析和机器学习等领域非常有用。
- 快速、高效:NumPy是用C语言编写的,因此可以快速地执行计算,而且在内存使用方面也做了优化,所以处理大型数据集时非常高效。
- 内存管理:NumPy提供了各种内存管理函数和方法,例如reshape()、resize()、flatten()、ravel()等,可以方便地操作数组的形状和大小,避免了不必要的内存分配和拷贝。
- 大数据处理:NumPy中的数组可以处理大量的数据,因为它使用了连续的内存块,所以可以高效地处理大型数据集。
- 高效的向量化计算:NumPy支持向量化计算,即在数组上进行运算,而不是在单个元素上进行计算,这种运算方式非常高效,并且可以利用现代CPU的并行计算能力。因此,如果你需要进行数组计算或矩阵计算,那么NumPy是一个非常好的选择。
- 矩阵计算:除了多维数组的支持之外,NumPy还提供了矩阵计算相关的函数和方法,例如dot()函数可以实现矩阵乘法运算。这些函数和方法在科学计算和机器学习等领域中经常被使用。
- 可以与其他科学计算库配合使用:NumPy与其他许多Python科学计算库(如SciPy、Pandas、Matplotlib等)兼容性良好,可以方便地与它们进行集成,实现更加复杂的科学计算任务。
- 可视化:NumPy可以通过与Matplotlib等可视化库的集成,实现数据可视化。
- 可扩展性:NumPy的底层代码是用C和Fortran编写的,可以通过Cython等工具将Python代码转换为C代码,从而提高代码的性能。
- 开源和免费:NumPy是开源和免费的软件,可以在任何操作系统上使用,并且可以自由地修改和分发。
数组的基本操作
创建数组
可以使用NumPy中的array
函数来创建数组,例如:
a = np.array([1, 2, 3])
print(a)
输出结果为:
[1 2 3]
可以使用dtype
参数来指定数组的数据类型:
b = np.array([1, 2, 3], dtype=float)
print(b)
输出结果为:
[1. 2. 3.]
可以使用zeros
、ones
、empty
等函数来创建特定形状的数组。
生成全为0的数组。
c = np.zeros((2, 3))
print(c)
输出结果为:
[[0. 0. 0.][0. 0. 0.]]
生成全为1的数组。
d = np.ones((2, 3))
print(d)
输出结果为:
[[1. 1. 1.][1. 1. 1.]]
生成随机数。
e = np.empty((2, 3), dtype=np.float64)
print(e)
输出结果为:
[[6.23042070e-307 3.56043053e-307 1.37961641e-306][2.22518251e-306 1.33511969e-306 1.24610383e-306]]
索引和切片
可以使用整数索引和切片来访问数组中的元素,例如:
a = np.array([1, 2, 3, 4, 5])
print(a[0])
print(a[1:3])
输出结果为:
1
[2 3]
可以使用多维索引和切片来访问多维数组中的元素,例如:
b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(b[0, 0])
print(b[1:3, 1:3])
输出结果为:
1
[[5 6][8 9]]
数组运算
可以使用NumPy中的各种函数来对数组进行运算,例如:
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a + b)
print(a - b)
print(a * b)
print(a / b)
输出结果为:
[5 7 9]
[-3 -3 -3]
[ 4 10 18]
[0.25 0.4 0.5 ]
可以使用各种函数来对数组进行操作,例如:
a = np.array([1, 2, 3])
print(np.sqrt(a))
print(np.exp(a))
print(np.sin(a))
输出结果为:
[1. 1.41421356 1.73205081]
[ 2.71828183 7.3890561 20.08553692]
[0.84147098 0.90929743 0.14112001]
可以使用dot
函数来进行矩阵乘法运算,例如:
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
print(np.dot(a, b))
输出结果为:
[[19 22][43 50]]
相关文章:

【数据分析:工具篇】NumPy(1)NumPy介绍
【数据分析:工具篇】NumPy(1)NumPy介绍NumPy介绍NumPy的特点数组的基本操作创建数组索引和切片数组运算NumPy介绍 NumPy(Numerical Python)是Python的一个开源的科学计算库,它主要用于处理大规模的多维数组…...

mysql时区问题
设置mysql容器时间与服务器时间一致 问题背景: 今天测试发现一个问题,时间不一致,当工单入库时,其创建时间和更新时间应该是一样的,即使不一样最多只会错几秒的时间;实际上两个时间相差的大概8小时&#…...

磨金石教育摄影技能干货分享|高邮湖上观花海
江苏高邮,说到这里所有人能想到的,就是那烟波浩渺的高邮湖。高邮在旅游方面并不出名,但是这里的自然人文景观绝对不输于其他地方。高邮不止有浩瀚的湖泊,春天的油菜花海同样壮观。春日的午后,与家人相约游玩࿰…...

mysql navicat忘记密码
mysql忘记密码是常用的事情,那么如何解决它呢?1、首先将MySQL的服务关闭,两种方法:(1)打开命令行cmd输入net stop mysql命令即可关闭MySQL服务。(2)打开任务管理器,找到服…...

Git的下载、安装、配置、使用、卸载
前言 我是跟着狂神老师学的。该博客仅用于笔记所用。 下面是老师的B站和笔记 B站:https://www.bilibili.com/video/BV1FE411P7B3?p1&vd_source9266cf72b1f398b63abe0aefe358d7d6 笔记:https://mp.weixin.qq.com/s/Bf7uVhGiu47uOELjmC5uXQ 一、准备工…...

【博客631】监控网卡与进程网络IO使用情况
监控进程的网络IO使用情况 1、vnstat 由于 vnstat 依赖于内核提供的信息,因此执行以下命令来验证内核是否提供了 vnStat 所期望的所有信息: # vnstat --testkernel This test will take about 60 seconds. Everything is ok.不带任何参数的 vnstat 将…...

【Leetcode】【简单】35. 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2 示例 2: 输入:…...
sql面试题
mysql优化 优化准则: 建表时:合理选择字段的类型,单表字段数量 sql查询尽量单表操作,避免复杂操作,复杂的多表通过java代码实现 构建复合索引优化,索引尽量可以覆盖主要业务查询 sql避免索引失效 避免大…...

SQL 进阶刷题笔记
SQL 进阶刷题笔记 一、MySQL 进阶 这里主要是 MySQL 刷题相关笔记,方便后面温习和查阅,希望可以帮到大家!!! 题1 请计算每张SQL类别试卷发布后,当天5级以上的用户作答的人数uv和平均分avg_score࿰…...
[网鼎杯 2020 朱雀组]Think Java
SqlDict.java ,其中sql语句处存在sql注入漏洞 package .sqldict;import cn.abc.core.sqldict.Row; import cn.abc.core.sqldict.Table; import java...
AIR32F103(十) 在无系统环境和FreeRTOS环境集成LVGL
目录 AIR32F103(一) 合宙AIR32F103CBT6开发板上手报告AIR32F103(二) Linux环境和LibOpenCM3项目模板AIR32F103(三) Linux环境基于标准外设库的项目模板AIR32F103(四) 27倍频216MHz,CoreMark跑分测试AIR32F103(五) FreeRTOSv202112核心库的集成和示例代码AIR32F103(六) ADC,I2S…...

SpringBoot接口 - 如何统一异常处理
SpringBoot接口如何对异常进行统一封装,并统一返回呢?以上文的参数校验为例,如何优雅的将参数校验的错误信息统一处理并封装返回呢?为什么要优雅的处理异常如果我们不统一的处理异常,经常会在controller层有大量的异常…...
如何使用Python进行数据可视化
数据可视化是一种将数据呈现为图形或图表的技术,它有助于理解和发现数据中的模式和趋势。Python是一种流行的编程语言,有很多库可以帮助我们进行数据可视化。在本文中,我们将介绍使用Python进行数据可视化的基本步骤。 第一步:导…...

vue -- 自定义指令钩子函数补充 自定义过滤器filter参数
自定义指令补充 自定义指令通过钩子函数的形式来实现自定义的功能 这里是几个常用的钩子函数以及它的方法: bind:只调用一次,指令第一次绑定到元素时调用,在这里可以进行一次性的初始化设置。 inserted:被绑定元素插…...

Qt不会操作?Qt原理不知道? | Qt详细讲解
文章目录Qt界面开发必备知识UI界面与控件类型介绍Qt设计器原理控件类型的介绍信号与槽机制处理常用控件创建与设置常见展示型控件创建与设置常见动作型控件创建与设置常见输入型控件创建与设置常见列表控件创建于设置Qt中对象树的介绍项目源码结构刨析.pro.hmain.cpp.cppQt界面…...
LeetCode-面试题 17.05. 字母与数字【前缀和,哈希表】
LeetCode-面试题 17.05. 字母与数字【前缀和,哈希表】题目描述:解题思路一:前缀和。数字为-1,字母为1。我们需要找到的子数组是前缀和之差为0的,例如s[right]-s[left]0,那么s[right]s[left],变为…...
华为OD机试题 - 叠放书籍(JavaScript)| 机考必刷
更多题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 更多华为OD题库,搜 梦想橡皮擦 华为OD 👑👑👑 更多华为机考题库,搜 梦想橡皮擦华为OD 👑👑👑 华为OD机试题 最近更新的博客使用说明本篇题解:叠放书籍题目输入输出示例一输入输出Code解题思路版权说明华为O…...

【数据库概论】第十一章 数据库并发控制
第十一章 并发控制 在多处理机系统中,每个处理机可以运行一个事务,多个处理机可以同时运行多个事务,实现多个事务并行运行,这就是同时并发方式。当多个用户并发存取数据库时会产生多个事务同时存取同一事务的情况,如果…...

Nginx配置实例-反向代理案例二
实现效果:使用nginx反向代理,根据访问的路径跳转到不同端口服务 nginx监听端口为9000, 访问 http://127.0.0.1:9000/edu/ 直接跳转到127.0.0.1:8080 访问 http://127.0.0.1:9000/vod/ 直接跳转到127.0.0.1:8081 一、准备工作 1. 准备两个tom…...
HTML 字符集
为了正确显示 HTML 页面,Web 浏览器必须知道要使用哪个字符集。 从 ASCII 到 UTF-8 ASCII 是第一个字符编码标准。ASCII 定义了 128 种可以在互联网上使用的字符:数字(0-9)、英文字母(A-Z)和一些特殊字符…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...

深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...

HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...

自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...

ubuntu22.04有线网络无法连接,图标也没了
今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...

Sklearn 机器学习 缺失值处理 获取填充失值的统计值
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...

Mysql故障排插与环境优化
前置知识点 最上层是一些客户端和连接服务,包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念,为通过安全认证接入的客户端提供线程。同样在该层上可…...