热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

图解python电子版_图解Numpy精翻版,一文带你入门Python数据处理

(关注AI新视野公众号,发送‘资料’二字,免费获取50G人工智能视频教程!)本文精心翻译自JayAlammar的博客:ht

(关注'AI新视野'公众号,发送‘资料’二字,免费获取50G人工智能视频教程!)

本文精心翻译自Jay Alammar的博客:https://jalammar.github.io/visual-numpy/,其用图解的方式详细介绍了 NumPy的功能和使用示例。

17e0ef619677

image

NumPy 是 Python 生态中数据分析、机器学习和科学计算的基础。它极大地简化了向量和矩阵的操作处理。Python 的一些主要软件包(如 scikit-learn、SciPy、pandas 和 tensorflow)都以 NumPy 作为其架构的基础部分。除了能对数值数据进行切片(slice)和切块(dice)之外,使用 NumPy 还能为处理和调试上述库中的高级实例带来极大的便利。

本文将介绍 NumPy 的一些主要方法,以及在将数据送入机器学习模型之前,numpy是如何表示不同类型数据(表格、图像、文本等)的。

import numpy as np

创建数组

通过传递一个 python 列表,并使用 np.array()来创建 NumPy 数组。python 创建的数组如下图右所示:

17e0ef619677

image

NumPy 提供了一些初始化数组的方法,例如 ones()、zeros() 和 random.random() 等方法。只要传递希望 NumPy 生成的元素维数即可:

17e0ef619677

image

一旦创建了数组,就可以随意操作啦。

数组运算

下面创建两个 NumPy 数组来展示数组运算功能。下图两个数组分别为 data 和 ones:

17e0ef619677

image

将它们按位置相加(即每行对应相加),直接输入 data + ones 即可:

17e0ef619677

image

除了加,还可以进行如下操作:

17e0ef619677

image

数组和单个数字之间也可以进行运算操作(即向量和标量之间的运算)。比如说,数组表示以英里为单位的距离,希望将其单位转换为千米。只需输入 data * 1.6 即可:

17e0ef619677

image

NumPy 是通过广播机制(broadcasting)来实现的,通过判断维数,来推测要进行的运算。

索引

可以像对 python 列表进行切片一样,对 NumPy 数组进行任意的索引和切片:

17e0ef619677

image

聚合

NumPy 还提供聚合功能:

17e0ef619677

image

除了 min、max 和 sum 之外,还可以使用 mean 得到平均值,使用 prod 得到所有元素的乘积,使用 std 得到标准差等等。

更多维度

上述的例子都是在一个维度上处理向量。NumPy 优雅的关键在于能够将上述所有方法应用到任意数量的维度。

创建矩阵

可以传递下列形状的 python 列表,使 NumPy 创建一个矩阵来表示它:

np.array([[1,2],[3,4]])

也可以使用上面提到的方法(ones()、zeros() 和 random.random()),只要传入一个描述创建的矩阵维数的元组即可:

17e0ef619677

image

矩阵运算

如果两个矩阵大小相同,可以使用算术运算符(+-*/)对矩阵进行加和乘。NumPy 将其视为 position-wise 运算:

17e0ef619677

image

也可以对不同大小的两个矩阵执行此类算术运算,但前提是某一个维度为 1(如矩阵只有一列或一行),在这种情况下,NumPy 使用广播规则执行算术运算:

点乘

算术运算和矩阵运算的一个关键区别是矩阵乘法使用点乘。NumPy 为每个矩阵赋予 dot() 方法,可以用它与其他矩阵执行点乘操作:

17e0ef619677

image

在上图的右下角添加了矩阵维数,来强调这两个矩阵的临近边必须有相同的维数。可以把上述运算视为:

17e0ef619677

image

矩阵索引

当处理矩阵时,索引和切片操作将更加有用:

17e0ef619677

image

矩阵聚合

可以像聚合向量一样聚合矩阵:

17e0ef619677

image

不仅可以聚合矩阵中的所有值,还可以使用 axis 参数执行跨行或跨列聚合:

17e0ef619677

image

转置和维度重塑

处理矩阵时的一个常见需求是旋转矩阵。当需要对两个矩阵执行点乘运算并对齐它们共享的维度时,通常需要进行转置。NumPy 数组有一个方便的方法 T 来求得矩阵转置:

17e0ef619677

image

在某些应用中,需要对特定矩阵的变换维度。在机器学习应用中,经常会有当某个模型对输入形状的要求与的数据集不同。NumPy 中的 reshape() 方法就可以发挥作用。只需将矩阵所需的新维度赋值给它即可。可以为维度赋值-1,NumPy 可以根据的矩阵推断出正确的维度:

17e0ef619677

image

更多维度

NumPy 可以在任意维度实现上述提到的所有内容。其中心数据结构被叫作 ndarray(N 维数组)。

17e0ef619677

image

在很多情况下,处理一个新的维度只需在 NumPy 函数的参数中添加一个逗号:

17e0ef619677

image

实际用法

以下是 NumPy 可实现的有用功能的实例演示。

公式

均方差公式,它是监督机器学习模型处理回归问题的核心:

17e0ef619677

image

在 NumPy 中实现该公式很容易:

17e0ef619677

image

这样做的好处在于,NumPy 并不关心 predictions 和 labels 包含一个值还是一千个值(只要它们大小相同)。可以通过一个示例依次执行上面代码行中的四个操作:

17e0ef619677

image

预测和标签向量都包含三个值,也就是说 n 的值为 3。减法后,得到的值如下:

17e0ef619677

image

然后将向量平方得到:

17e0ef619677

image

对这些值求和:

17e0ef619677

image

得到的结果即为该预测的误差值和模型质量评分。

数据表达

电子表格、图像、音频等需要处理和构建模型所需的数据类型,其中很多都适合在 n 维数组中表示:

表格

电子表格就是二维矩阵。电子表格中的每个工作表都可以是它自己的变量。python 中最流行的表格抽象是 pandas 数据帧,其在 NumPy 之上构建。

17e0ef619677

image

音频

音频文件是样本的一维数组。每个样本都是一个数字,代表音频信号的一小部分。CD 质量的音频每秒包含 44,100 个样本,每个样本是-65535 到 65536 之间的整数。这意味着如果有一个 10 秒的 CD 质量 WAVE 文件,可以将它加载到长度为 10 * 44,100 = 441,000 的 NumPy 数组中。如果想要提取音频的前一秒,只需将文件加载到 audio 的 NumPy 数组中,然后获取 audio[:44100]。

下面是一段音频文件:

17e0ef619677

image

其他时间序列数据也可以同样表示(如股票随时间变化的价格)。

图像

图像是尺寸(高度 x 宽度)的像素矩阵。

如果图像是黑白(即灰度)的,则每个像素都可以用单个数字表示(通常在 0(黑色)和 255(白色)之间)。

下图是一个图像文件的部分:

17e0ef619677

image

如果图像是彩色的,则每个像素由三个数字表示------红、绿和蓝。在这种情况下,需要一个三维数组(因为每个单元格只能包含一个数字)。因此彩色图像由尺寸为(高 x 宽 x3)的 ndarray 表示:

17e0ef619677

image

欢迎关注全平台AI自媒体 “AI新视野”,第一时间获取人工智能学术、产业前沿!



推荐阅读
  • 浅析python实现布隆过滤器及Redis中的缓存穿透原理_python
    本文带你了解了位图的实现,布隆过滤器的原理及Python中的使用,以及布隆过滤器如何应对Redis中的缓存穿透,相信你对布隆过滤 ... [详细]
  • 通过将常用的外部命令集成到VSCode中,可以提高开发效率。本文介绍如何在VSCode中配置和使用自定义的外部命令,从而简化命令执行过程。 ... [详细]
  • window下的python安装插件,Go语言社区,Golang程序员人脉社 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • ButterKnife 是一款用于 Android 开发的注解库,主要用于简化视图和事件绑定。本文详细介绍了 ButterKnife 的基础用法,包括如何通过注解实现字段和方法的绑定,以及在实际项目中的应用示例。此外,文章还提到了截至 2016 年 4 月 29 日,ButterKnife 的最新版本为 8.0.1,为开发者提供了最新的功能和性能优化。 ... [详细]
  • 机器学习算法:SVM(支持向量机)
    SVM算法(SupportVectorMachine,支持向量机)的核心思想有2点:1、如果数据线性可分,那么基于最大间隔的方式来确定超平面,以确保全局最优, ... [详细]
  • 本文介绍如何使用OpenCV和线性支持向量机(SVM)模型来开发一个简单的人脸识别系统,特别关注在只有一个用户数据集时的处理方法。 ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • 本文将详细介绍如何注册码云账号、配置SSH公钥、安装必要的开发工具,并逐步讲解如何下载、编译 HarmonyOS 2.0 源码。通过本文,您将能够顺利完成 HarmonyOS 2.0 的环境搭建和源码编译。 ... [详细]
  • 解决问题:1、批量读取点云las数据2、点云数据读与写出3、csf滤波分类参考:https:github.comsuyunzzzCSF论文题目ÿ ... [详细]
  • 本文介绍了如何利用 `matplotlib` 库中的 `FuncAnimation` 类将 Python 中的动态图像保存为视频文件。通过详细解释 `FuncAnimation` 类的参数和方法,文章提供了多种实用技巧,帮助用户高效地生成高质量的动态图像视频。此外,还探讨了不同视频编码器的选择及其对输出文件质量的影响,为读者提供了全面的技术指导。 ... [详细]
  • 通过使用 `pandas` 库中的 `scatter_matrix` 函数,可以有效地绘制出多个特征之间的两两关系。该函数不仅能够生成散点图矩阵,还能通过参数如 `frame`、`alpha`、`c`、`figsize` 和 `ax` 等进行自定义设置,以满足不同的可视化需求。此外,`diagonal` 参数允许用户选择对角线上的图表类型,例如直方图或密度图,从而提供更多的数据洞察。 ... [详细]
  • 2018 HDU 多校联合第五场 G题:Glad You Game(线段树优化解法)
    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6356在《Glad You Game》中,Steve 面临一个复杂的区间操作问题。该题可以通过线段树进行高效优化。具体来说,线段树能够快速处理区间更新和查询操作,从而大大提高了算法的效率。本文详细介绍了线段树的构建和维护方法,并给出了具体的代码实现,帮助读者更好地理解和应用这一数据结构。 ... [详细]
  • `chkconfig` 命令主要用于管理和查询系统服务在不同运行级别中的启动状态。该命令不仅能够更新服务的启动配置,还能检查特定服务的当前状态。通过 `chkconfig`,管理员可以轻松地控制服务在系统启动时的行为,确保关键服务正常运行,同时禁用不必要的服务以提高系统性能和安全性。本文将详细介绍 `chkconfig` 的各项参数及其使用方法,帮助读者更好地理解和应用这一强大的系统管理工具。 ... [详细]
author-avatar
深碍是碍u不是爱
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有