《深度学习与图像识别:原理与实践》—2.3 Numpy使用详解

举报
华章计算机 发表于 2019/07/24 20:02:59 2019/07/24
【摘要】 本节书摘来自华章计算机《深度学习与图像识别:原理与实践》一书中的第2章,第2.3.1节,作者是魏溪含 涂铭 张修鹏。

2.3 Numpy使用详解

Numpy(Numerical Python的简称)是高性能科学计算和数据分析的基础包,其提供了矩阵运算的功能。Numpy提供的主要功能具体如下。

  • ndarray—一个具有向量算术运算和复杂广播能力的多维数组对象。

  • 用于对数组数据进行快速运算的标准数学函数。

  • 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。

  • 非常有用的线性代数,傅里叶变换和随机数操作。

  • 用于集成C /C++和Fortran代码的工具。

除了明显的科学计算用途之外,Numpy还可以用作通用数据的高效多维容器,定义任意的数据类型。这些都使得Numpy能够无缝、快速地与各种数据库集成。

这里提到的“广播”可以这么理解:当两个维度不同的数组(array)运算的时候,可以将低维的数组复制成高维数组参与运算(因为Numpy运算的时候需要结构相同)。

在学习图像识别的过程中,需要将图片转换为矩阵。即将对图片的处理简化为向量空间中的向量运算。基于向量运算,我们就可以实现图像的识别。

2.3.1 创建数组

现在就来关注下Numpy中的一些核心知识点。在Numpy中,最核心的数据结构是ndarray, ndarray代表的是多维数组,数组指的是数据的集合。为了方便理解,我们下面列举一个小例子。

一个班级里学生的学号可以通过一维数组来表示,数组名为a,数组a中存储的是数值类型的数据,分别是1,2,3,4。

image.png

 

其中,a[0]代表的是第一个学生的学号1,a[1]代表的是第二个学生的学号2,以此类推。

一个班级里学生的学号和姓名,可以用二维数组来表示,数组名为b。

image.png

 

类似的,其中b[0,0]代表的就是1(学号),b[0,1]代表的就是Tim(学号为1的学生的名字),以此类推b[1,0]代表的是2(学号)等。

借用线性代数的说法,一维数组通常称为向量(vector),二维数组通常称为矩阵(matrix)。

当我们安装完Anaconda之后,默认情况下Numpy已经在库中了,所以不需要额外安装。下面我们来写一些语句简单测试下Numpy库。

1)在Anaconda的Notebook里输入import numpy as np之后,通过键盘按住Shift+Enter执行,如果没有报错,则说明Numpy已被正常引入,如图2-7所示。

 image.png

图2-7 在Notebook中引入Numpy

稍微解释下这条语句:通过import关键字将Numpy库引入,然后通过as为其取一个别名np,别名的作用是为了便于后续引用。

2)Numpy中的array()可以直接导入向量,代码如下:

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

3)numpy.array()方法也可以导入矩阵,代码如下:

matrix = np.array([[1,'Tim'],[2,'Joey'],[3,'Johnny'],[4,'Frank']])

轮到你来:

首先定义一个向量,然后分配一个变量名vector;定义一个矩阵,然后分配给变量matrix;最后通过Python中的print方法在Notebook中打印出结果。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。