NumPy库是Python库中用于数据分析,机器学习,科学计算的一个主力,它极大地简化了向量和矩阵的操作和处理。Python的一些主要软件包依赖于NumPy作为其架构的基础部分,比如scikit-learn, SciPy, pandas以及 tensorflow。

在这篇文章中,我们将介绍一些使用NumPy的主要方法,以及在我们为机器学习模型提供服务之前它如何表示不同类型的数据(表格,图像,文本等)。

import numpy as np

1.创建数组

我们可以通过将Python列表传递给它并使用np.array()来创建一个NumPy数组(也就是强大的ndarray)。在这种情况下,Python创建了我们在右边可以看到的数组:

很多情况下,我们希望NumPy为我们初始化数组的值。NumPy为这些情况提供了诸如ones(),zeros()和random.random()之类的方法。我们只需要传递它们要生成的元素数量:

待我们创建了数组,我们便可以开始以有趣的方式操作它们。

2.数组算术

让我们创建两个NumPy数组来展示它们的用处。我们把两个数组分别叫作data,ones

使他们每行对应元素相加,只需data + ones

当开始学习这些工具时,我们会发现这样的抽象让我们不必在循环中编写这样的计算。这是一个很棒的抽象,可以让你在更高层次上思考问题。

其他运算方式的补充:

通常情况下,我们希望在数组和单个数字之间执行操作(我们也可以将其称为向量和标量之间的操作)。比如说,我们的数组表示以英里为单位的距离,我们希望将其转换为公里数。我们简单地说data * 1.6

NumPy中这种操作意味着每个元素都会发生相乘,这个概念叫做广播,它非常有用。

3.索引

我们可以通过Python列表切片的所有方式对NumPy数组进行索引和切片:

4.聚合

NumPy为我们提供的其他好处是聚合功能:

除了 min,max,sum,还有许多类似的功能,比如求平均值的mean,获得所有元素乘积的prod,获得标准差的std,还有其他。


更多功能

以上我们看到的所有例子都在一个维度上处理向量。NumPy的优势的一个关键部分是它能够将我们目前所看到的所有内容应用到任意数量的维度。

5.创建矩阵

我们可以传递以下形状的Python列表列表,让NumPy创建一个矩阵来表示它们:

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

我们也可以使用上面提到的相同方法(ones()zeros()random.random()),只要我们给它们一个元组来描述我们正在创建的矩阵的维度:

6.矩阵算术

+-*/如果两个矩阵的大小相同,我们可以使用算术运算符()来添加和乘以矩阵。NumPy将这些作为位置操作处理:

只有当不同维度为1时(例如矩阵只有一列或一行),我们才能在不同大小的矩阵上进行这些算术运算,在这种情况下,NumPy将其广播规则用于该操作:

7.点积

与算术相关的一个关键区别是使用点积的矩阵乘法。NumPy为每个矩阵提供了一种dot()方法,可用于与其他矩阵进行点积运算:

图的底部添加了矩阵尺寸,以强调两个矩阵在它们彼此面对的一侧必须具有相同的尺寸(矩阵乘法必须的特征)。您可以将此操作可视化为如下所示:

8.矩阵索引

当我们操作矩阵时,索引和切片操作变得更加有用:

9.矩阵聚合

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

我们不仅可以聚合矩阵中的所有值,还可以使用以下axis参数在行或列之间进行聚合:

10.转置和重塑

处理矩阵时的一个共同需求是需要旋转矩阵。当我们需要采用两个矩阵的点积并​​需要对齐它们共享的维度时,通常就是这种情况。NumPy数组有一个方便的属性,T用于获取矩阵的转置:

在更高级的用例中,您可能会发现自己需要切换某个矩阵的维度。在机器学习应用程序中通常就是这种情况,其中某个模型期望输入的某个形状与您的数据集不同。NumPy的reshape()方法在这些情况下很有用。您只需将矩阵所需的新尺寸传递给它即可。您可以为维度传递-1,NumPy可以根据您的矩阵推断出正确的维度:

11.更多维度

NumPy可以完成我们在任何维度上提到的所有内容。其中心数据结构称为ndarray(N维数组),原因很简单。

在很多方面,处理新维度只是在NumPy函数的参数中添加逗号:

12.实用场景

公式

实现适用于矩阵和向量的数学公式是考虑NumPy的关键用例。这就是为什么NumPy是Python科学计算社区的宠儿。例如,考虑均方误差公式,它是监督机器学习模型处理回归问题的核心:

在NumPy中实现这一点是轻而易举的:

这样做的好处是,numpy能妥善应对,即便predictionslabels含有一个或一千值(只要他们都是相同的大小)。我们可以通过一个示例逐步执行该代码行中的四个操作:

预测值和标签向量都包含三个值。这意味着n的值为3。在我们执行减法后,我们最终得到如下值:

然后我们可以对矢量中的值进行平方:

现在我们总结这些值:

这就是预测误差值与模型评价得分。

参考文章:https://jalammar.github.io/visual-numpy/

numpy 创建加一行_NumPy数据处理的可视化相关推荐

  1. numpy 创建加一行_数据科学|可视化图解Python科学计算包Numpy

    文章申明 文章作者:梁斌伟 责任编辑:郭德真 微信编辑:玖蓁 本文转载自公众号 实战统计学 (ID:statrcn) 原文链接:可视化图解Python科学计算包NumPy 作者:梁斌伟 编者按: 你真 ...

  2. numpy 创建加一行_Python数据分析快速入门--NumPy amp; Pandas

    之前为大家分享了python的基本语法,有疑问的小伙伴可以参考下文- 土豆爱数学:零基础如何快速入门python​zhuanlan.zhihu.com 对python基本语法了解后,就可以尝试用pyt ...

  3. 加一行代码,让你的Python的运算速度加快100倍

    一行代码让你的python运行速度提高100倍 python一直被病垢运行速度太慢,但是实际上python的执行效率并不慢,慢的是python用的解释器Cpython运行效率太差. "一行代 ...

  4. 自定义error、北京污染物数据处理、可视化

    数据资源已上传在资源库 自定义error.北京污染物数据处理.可视化 README 原始数据说明: 各类污染物都是微克/立方米,但是在计算AQI时CO是使用毫克的 原始数据的格式分布: ['No', ...

  5. 初始化创建画布_使用HTML5,画布和开放数据创建全球降水(雨)可视化

    初始化创建画布 我目前正在为Three.js编写下一本书,其中一章涉及可视化开放数据. 在寻找可以使用的数据时,我遇到了来自NOAA的一组数据. 通过此站点,您可以以网格格式下载一组全世界的每月降水报 ...

  6. 使用HTML5,画布和开放数据创建全球降水(雨)可视化

    我目前正在为Three.js编写下一本书,其中一章涉及可视化开放数据. 在寻找可以使用的数据时,我遇到了来自NOAA的一组数据. 通过此站点,您可以以网格格式下载一组全世界的每月降水报告. 因此,我下 ...

  7. python基于爬虫技术的海量电影数据分析源码,数据处理分析可视化,GUI界面展示

    基于爬虫技术的海量电影数据分析 介绍 一个基于爬虫技术的海量电影数据分析系统 系统架构 本系统主要分为四个部分,分别为后端爬虫抓取.数据处理分析可视化.GUI界面展示.启动运行,分别对应getData ...

  8. 招聘数据爬取、数据处理与可视化(v2--解析JS渲染页面)

    招聘数据爬取.数据处理与可视化(v2--解析JS渲染页面) 更新说明 程序说明 数据爬取 观察网页结构 页面解析 将数据写入csv文件中 通过观察页面链接,爬取所有页面 爬虫程序完整代码 爬取数据结果 ...

  9. numpy创建空数组

    今天遇到的一个小的问题,关于numpy创建空数组的问题: 问题描述: 有一个shape为(308, 2)的二维数组,以及单独的一个数字,需要保存到csv文件中,这个单独的数字让其保存到第3列第一行的位 ...

最新文章

  1. js中Object类型和Array类型的变量被赋值(复制)给其他变量后,修改被赋值(复制)的新变量的值,会影响原始变量的值,这是为什么呢?
  2. 趋势发展之人工智能,入行要趁早
  3. [erlang]erlang程序运行的几种方式
  4. python内核_python-在多处理模块中使用所有内核的100%
  5. 常见鸟的种类及特点_常见乌龟的品种及图片大全!
  6. 耶路撒冷三千年(笔记)
  7. 安卓编程 Sqlite的入门编程
  8. 转【测试基础】测试计划如何编写
  9. win10硬盘锁怎么解除_win10如何使用bitlocker解锁硬盘加密
  10. 阿里云国际版账号如何申请
  11. hub设备_是快充能手 更是HUB拓展管家 你的移动电源何必仅仅只能充电
  12. P1:选 7-15 群发邮件
  13. python拼音怎么写-[编程心得]用Python给汉字加上带音调的拼音
  14. 命令_查看占用端口 netstat -ano|findstr 8080
  15. 【乐器常识】声音之美
  16. VoLTE、VoWiFi和VoIP有什么不同?
  17. 代理arp 无故arp 反向arp
  18. Nokia5233手机和我装的几个symbian V5手机软件
  19. 运维工程师不可错过的2020年值得关注的综合性网络监控工具
  20. 扇贝python离线_扇贝自动打卡Python脚本(Python3)

热门文章

  1. Linux C++多线程同步的四种方式
  2. [云炬小程序实战笔记] 第3章 云炬博客小程序全局配置
  3. The greatest happiness 2019-11-13
  4. [C++调试笔记]Main函数声明变量
  5. 一文详解神经网络模型
  6. [scala-spark]9. RDD创建操作
  7. [实践篇] Softmax Regression
  8. VTK修炼之道45:图形进阶_vtkPolyData属性数据
  9. Matlab生成各种伪随机信号_idinput指令
  10. Linux下cat命令各种用法