栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【深度学习基础】numpy基础使用

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【深度学习基础】numpy基础使用

如需学习Python基础,请查看一天入门Python系列https://blog.csdn.net/day_and_night_2017/category_8729957.html

numpy基础

numpy是基于python的一套数学计算库,具有丰富的矩阵运算相关的api, 为深度学习提供便利的计算工具。

numpy导入

import numpy as np 

使用import导入numpy,并指定别名np

生成数组(一维向量)

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

numpy使用ndarray表示数组。

>>> x = np.array([1.0, 2.0, 3.0])
>>> print(x)
[ 1. 2. 3.]
>>> type(x)

tips:我们一般把一维数组称为向量;把二维数组称为矩阵;三维以上的数组称为张量。 

向量与向量的基础运算

向量之间可以进行对应位置元素的基础运算:

>>> x = np.array([1.0, 2.0, 3.0])
>>> y = np.array([2.0, 4.0, 6.0])

>>> x + y # 对应元素的加法
array([ 3., 6., 9.])

>>> x - y
array([ -1., -2., -3.])

>>> x * y # element-wise product
array([ 2., 8., 18.])

>>> x / y
array([ 0.5, 0.5, 0.5])

当两个向量的长度一致时,均可以进行这种运算,当出现不一致时,会报错。

向量与标量的运算

向量与标量进行计算时,相当于向量的每个元素与标量之间进行计算:

>>> x = np.array([1.0, 2.0, 3.0])
>>> x / 2.0
array([ 0.5, 1. , 1.5])

生成多维数组

numpy可以生成多维数组,例如:

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

>>> A.shape
(2, 2)

>>> A.dtype
dtype('int64')

只要把多个一维向量叠放在一起,就构成了二维矩阵。

ndarray有两个常用的属性:

shape: 获取张量的维数。

dtype: 获取数据元素的类型

矩阵之间的运算

矩阵之间的运算也是符合对应位置计算的原则的:

>>> B = np.array([[3, 0],[0, 6]])
>>> A + B
array([[ 4, 2],
[ 3, 10]])

>>> A * B
array([[ 3, 0],
[ 0, 24]])

 

矩阵与标量计算

矩阵与常量计算,依然是每个元素与标量进行计算的结果:

>>> print(A)
[[1 2]
[3 4]]

>>> A * 10
array([[ 10, 20],
[ 30, 40]])

这里无论是一维向量还是二维数组与标量之间进行计算的时候,都是采用“广播”的方式进行计算的。

广播

广播是应用在标量与向量计算的场景中的,什么是广播呢?

在二维矩阵与标量10进行计算的时候,相当于在矩阵对应的位置上,标量扩展成了一个维数相同,元素值均为标量值的矩阵,然后对应位置进行计算,这就叫广播。

其实,矩阵与向量直接也存在着广播:

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

>>> A * B
array([[ 10, 40],
[ 30, 80]])

 此处相当于将B向量按照A矩阵的格式,扩展成一个对应的矩阵,然后对应位置计算。

向量的随机读写

向量底层还是数组,所以其读写方式与数组类似:

>>> X = np.array([[51, 55], [14, 19], [0, 4]])
>>> print(X)
[[51 55]
[14 19]
[ 0 4]]

>>> X[0] # 第0行
array([51, 55])

>>> X[0][1] # (0,1)的元素
55

 首个索引从0开始,X[0]表示的是矩阵的第一行元素构成的一维数组(向量)

我们也可以for循环依次获取每一行:

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

矩阵合并为一维数组
>>> X = X.flatten() # 将X转换为一维数组
>>> print(X)
[51 55 14 19 0 4]

使用flatten可以将矩阵按照从上到下,从左到右的顺序合并为一维矩阵。

我们可以指定索引批量获取元素:

>>> X[np.array([0, 2, 4])] # 获取索引为0、 2、 4的元素
array([51, 14, 0])

矩阵元素判断、过滤

对矩阵的操作,相当于对每个元素的操作:

>>> X > 15
array([ True, True, False, True, False, False], dtype=bool)

根据判断结果,过滤结果为True对应位置的元素

>>> X[X>15]
array([51, 55, 19])

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/949825.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号