Numpy模块

在深度学习的过程中经常会涉及到矩阵和数组的计算,用numpy会便捷很多,这里就简单介绍一些在深度学习中会用到的一些。(建议看一下莫烦python的教学视频)

1、导入numpy

1 >>> import numpy as np

Python 中使用 import语句来导入库。这里的 import numpy as np,直译的话就是“将 numpy作为 np导入”的意思。通过写成这样的形式,之后相关的方法均可以用np来调用。

2、生成Numpy数组

要生成NumPy数组,需要使用np.array()方法。 np.array()接收Python列表作为参数,生成NumPy数组( numpy.ndarray)。

1 >>> x = np.array([2.0, 4.0, 6.0])
2 >>> print(x)
3 [ 2. 4. 6.]
4 >>> type(x)
5 <class 'numpy.ndarray'>

3、Numpy算术运算

 1 >>> x = np.array([1.0, 2.0, 3.0])
 2 >>> y = np.array([2.0, 4.0, 6.0])
 3 >>> x + y # 对应元素的加法
 4 array([ 3., 6., 9.])
 5 >>> x - y
 6 array([ -1., -2., -3.])
 7 >>> x * y # element-wise product
 8 array([ 2., 8., 18.])
 9 >>> x / y
10 array([ 0.5, 0.5, 0.5])

注意:数组x和数组y的个数必须是相同的(比如都是一维数组元素是3个),如果不相同就会报错

4、Numpy的N维数组

numpy数组(np.array)可以生成N维数组,数学中一维数组称为向量,二维数组称为矩阵,三维及以上称为“张量”。

1 >>> A = np.array([[1, 2], [3, 4]])
2 >>> print(A)
3 [[1 2]
4 [3 4]]

矩阵的算术运算

1 >>> B = np.array([[3, 0],[0, 6]])
2 >>> A + B
3 array([[ 4, 2],
4 [ 3, 10]])
5 >>> A * B
6 array([[ 3, 0],
7 [ 0, 24]])

5、广播

Numpy中,形状不同的数组之间也可以进行运算,这个功能称为广播。这个功能在深度学习中会经常出现。

1 >>> A = np.array([[1, 2], [3, 4]])
2 >>> A * 10
3 array([[ 10, 20],
4 [ 30, 40]])

这个例子中就是将标量10扩展成和矩阵相同的形状进行运算。 

1 >>> A = np.array([[1, 2], [3, 4]])
2 >>> B = np.array([10, 20])
3 >>> A * B
4 array([[ 10, 40],
5 [ 30, 80]])

这个例子中一维数组B变成了和二维数组相同的形状,然后再以对应元素的方式进行计算。

综上,基于Numpy的广播功能,不同形状的数组之间也可以进行运算。

6、访问元素

元素的索引从0开始。对各个元素的访问可按如下方式进行。

1 >>> X = np.array([[51, 55], [14, 19], [0, 4]])
2 >>> print(X)
3 [[51 55]
4 [14 19]
5 [ 0 4]]
6 >>> X[0] # 第0行
7 array([51, 55])
8 >>> X[0][1] # (0,1)的元素
9 55

也可以使用 for语句访问各个元素。

>>> for row in X:
... print(row)
...
[51 55]
[14 19]
[0 4]

除了前面介绍的索引操作, NumPy还可以使用数组访问各个元素。

1 >>> X = X.flatten() # 将X转换为一维数组
2 >>> print(X)
3 [51 55 14 19 0 4]
4 >>> X[np.array([0, 2, 4])] # 获取索引为0、 2、 4的元素
5 array([51, 14, 0])

运用这个标记法,可以获取满足一定条件的元素。例如,要从 X中抽出大于15的元素,可以写成如下形式。

1 >>> X > 15
2 array([ True, True, False, True, False, False], dtype=bool)#得到布尔型数组
3 >>> X[X>15]#括号中表示索引的条件,取出满足条件的数
4 array([51, 55, 19])

 

posted @ 2019-06-12 16:17  funnything  阅读(203)  评论(0编辑  收藏  举报