深度学习入门01-NumPy-1

大家好!上一篇文章我们介绍一下关于深度学习入门的计划,下面我们按照计划实施,正式开始学习。

我们还是从Python的基础开始讲起,通过阅读我们之前发布的文章,相信你对Python的安装、Python版本、Python的外部库、Python解释器等内容都有一定的认识,对Python语法中的算术计算、数据类型、变量、列表、字典、布尔型及其运算、if语句、for语句、函数等概念都了然于心,对Python脚本文件、 Python类等内容也能熟练掌握。如果你对上面的名词还有一定疑惑,请阅读我们的往期文章进行学习,这里不再赘述。

下面我们就学习一下以后我们会经常用到的一个外部库——NumPy。
在这里插入图片描述
在深度学习的实现中,经常出现数组和矩阵的计算,NumPy的数组类(numpy.array)中提供了很多便捷的方法。因此,我们很有必要学习一下NumPy。

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它协作者共同开发,2005 年,Travis Oliphant 在 Numeric 中结合了另一个同性质的程序库 Numarray 的特色,并加入了其它扩展而开发了 NumPy。NumPy 为开放源代码并且由许多协作者共同维护开发。

NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:

  • 一个强大的N维数组对象 ndarray
  • 广播功能函数
  • 整合 C/C++/Fortran 代码的工具
  • 线性代数、傅里叶变换、随机数生成等功能

NumPy官方网站:http://www.numpy.org/, 有兴趣的同学可以去详细了解一下。

1 导入NumPy

NumPy是外部库,这里所说的“外部”是指不包含在标准版 Python中。因此,为能够使用NumPy,我们需要导入NumPy库。

输入命令:

>>> import numpy as np # 将numpy库导入,np做为numpy库的缩写名使用

Python中使用import语句来导入库,运行上述语句后,np做为numpy库名的缩写,NumPy相关的方法均可通过 np来调用。

也可以使用下面语句导入numpy。

>>> import numpy # 导入numpy库

在使用NumPy的xxx方法时,第一种导入形式需写成np. xxx,第二种形式需写成numpy. xxx。第一种导入方法已经成为大家的共识,因此我们也采用第一种。

2 生成NumPy数组

要生成NumPy数组需要使用np.array()方法,该方法接收Python列表作为参数,生成NumPy数组类。我们使用PyCharm软件下方的Python Console(Anaconda中提供的IPython交互Shell)。

In[2]: import numpy as np
In[3]: x = np.array([1.0, 2.0, 3.0])
In[4]: print(x)
[1. 2. 3.]
In[5]: type(x)
Out[5]: numpy.ndarray

在这里插入图片描述

3 NumPy的算术运算

In[6]: x = np.array([1.0, 2.0, 3.0])
In[7]: y = np.array([2.0, 4.0, 6.0])
In[8]: x + y # 对应元素的加法
Out[8]: array([3., 6., 9.])
In[9]: x - y # 对应元素的减法
Out[9]: array([-1., -2., -3.])
In[10]: x * y # 对应元素的乘法
Out[10]: array([ 2.,  8., 18.])
In[11]: x / y # 对应元素的除法
Out[11]: array([0.5, 0.5, 0.5])

从上述的代码中可以看到,NumPy数组直接使用±*/运算符时,是数组对应元素进行运算的。当然,这就要求数组元素个数是相同的。如果元素个数不同,程序就会报错。
在这里插入图片描述
“对应元素的”的英文是 element-wise,比如“对应元素的乘法”就是element-wise product,希望大家能记住这个英文单词。

NumPy数组不仅可以进行element-wise运算,也可以和单一的数值(标量) 组合起来进行运算。此时,需要在NumPy数组的各个元素和标量之间进行运算。这个功能也被称为广播。

In[17]: x = np.array([1.0, 2.0, 3.0])
In[18]: x / 2.0
Out[18]: array([0.5, 1. , 1.5])

4 NumPy的N维数组

4.1 生成二维数组(矩阵)

NumPy不仅可以生成一维数组(排成一列的数组),也可以生成多维数组。比如,可以生成如下的二维数组(矩阵)。当然,np.array()也可以生成三维、四维等多维数组。

In[19]: A = np.array([[1, 2], [3, 4]])
In[20]: print(A)
[[1 2]
 [3 4]]

这里生成了一个2 × 2的矩阵 A。另外,矩阵 A的形状可以通过 shape查看,矩阵元素的数据类型可以通过 dtype查看。

In[21]: A.shape
Out[21]: (2, 2)
In[22]: A.dtype
Out[22]: dtype('int32')

4.2 矩阵的算术运算

和一维数组的算术运算一样,矩阵的算术运算也可以在相同形状的矩阵间以对应元素的方式进行。并且,也可以通过标量(单一数值)对矩阵进行算术运算。这也是基于广播的功能。

In[23]: B = np.array([[3, 0], [0, 6]])
In[24]: A + B  # 对应元素的加法
Out[24]: 
array([[ 4,  2],
       [ 3, 10]])
In[25]: A * B # 对应元素的乘法
Out[25]: 
array([[ 3,  0],
       [ 0, 24]])
In[26]: print(A)
[[1 2]
 [3 4]]
In[27]: A * 10 # 与标量进行乘法运算
Out[27]: 
array([[10, 20],
       [30, 40]])

4.3 Tips

NumPy 数组(np.array)可以生成 N 维数组,数学上将一维数组称为向量,将二维数组称为矩阵。另外,可以将一般化之后的向量或矩阵等统称为张量(tensor)。本书基本上将二维数组称为“矩阵”,将三维数组及三维以上的数组称为“张量”或“多维数组”。

以上就是本次学习NumPy的主要内容,下期我们将学习NumPy的广播机制和如何访问数组元素等内容。

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值