【深度学习】0-0 NumPy基础知识

news/2024/11/15 3:29:32/

NumPy的主要特点
ndarray,快速,节省空间的多维数组,提供数组化的算术运算和高级的广播功能

导入NumPy
NumPy是外部库。首先要导人NumPy库。
import numpy as np

NumPy数组
生成NumPy数组,使用np.array(),接收Python列表作为参数

通过arange创建数组:下例中创建一个0~1间隔为0.1的行向量,从0开始,不包括1

>>>np.array(0,10.1)
array([0.,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9])

利用random模块生成ndarray
在深度学习中,我们经常需要对一些变量进行初始化,适当的初始化能提高模型的性能。通常用随机数生成模块random来生成,
random模块又分为多种函数:
random生成0到1之间的随机数;
uniform生成均匀分布随机数;
randn生成标准正态的随机数;
normal生成正态分布;
shuffle随机打乱顺序;
seed设置随机数种子。
例如:

import numpy as np
nd5 = np.random.random([3,3])
print(nd5)
print(type(nd5))

结果如下

[[ 0.88900951 0.47818541 0.91813526][ 0.48329167 0.63730656 0.14301479]
[ 0.9843789  0.99257093 0.24003961]]

创建特定形状的多维数组
数据初始化时,有时需要生成一些特殊矩阵,如0或1的数组或矩阵,这时我们可以利用np.zeros、np.ones、np.diag来实现,下面我们通过几个示例来说明。

#生成全是03x3矩阵
nd6 = np.zeros([3,3])
#生成全是13x3矩阵
nd7 = np.ones([3,3])
#生成3阶的单位矩阵
nd8= np.eye(3)
#生成3阶对角矩阵
print (np.diag([1, 2, 3]))

存取元素

>>>a = np.arange(10)
>>>print (a,'\n')
[0 1 2 3 4 5 6 7 8 9]
#简单的的切片课作,0~4号元素,不包括5
>>>print('a[:5]=’,a[:5],‘\n')
a[:5]= [0 1 2 3 4]
#数组从后往前取
>>>print('a[:-1]=',a[:-1],’\n')
a[:-1]= [012345678]
#加入步长参数
>>>print('a[1:-1:2]=’,a[1:-1:2],’\n')
a[1:-1:2]= [1 3 5 7]
# 省略范围的开始下标和结束下标,步长为-1,整个数组头尾颠倒
>>>print('a[::-1]=’,a[::-1],'\n')
a[::-1]= [9 8 7 6 5 4 3 2 1 0]
# 步长为负数时,开始下标必须大于结束下标,下面步长为-2
>>>print( ‘a[5:1:-2]=,a[5:1:-2])
a[5:1:-2]= [5 3]

矩阵操作
深度学习中经常涉及多维数组或矩阵的运算,正好NumPy模块提供了许多相关的计算方法,下面介绍一些常用的方法。

nd14=np.arange(9).reshape([3,3])
#矩阵转置
np.transpose(nd14)
#矩阵乘法运算
a=np.arange(12).reshape([3,4])
b=np.arange(8).reshape([4,2])
a.dot(b)
#求矩阵的迹
a.trace()

NumPy算术运算

>>>x= np.array([1.02.0, 3.0])
>>>y = np.array([2.04.06.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.50.5])

数组x和数组y的元素个数是相同的,如果元亲个数不同,程序就会报错
element-wise product 表示“对应元素的乘法”
NumPy数组不仅可以进行element-wise运算,也可以和单一的数值(标量)组合起来进行运算
这个功能也被称为广播

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

N维数组
NumPy可以生成多维数组,比如,可以生成如下的二维数组(矩阵)。

>>> A = np.array([[12][3,4]])

矩阵A的形状可以通过shape查看
矩阵元素的数据类型可以通过dtype查看

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

矩阵的算术运算也可以在相同形状的矩阵间以对应元素的方式进行。
数学上将一维数组称为向量
将二维数组称为矩阵
可以将一般化之后的向量或矩阵等称为张量

基本上将二维数组称为“矩阵”,将三维组及三维以上的数组称为“张量”或“多维数组

广播
NumPy中,形状不同的数组之间也可以进行运算。
例如:将标量10被扩展(复制)成了2x2的形状,然后再与矩阵A进行乘法运算,这个巧妙的功能称为广播
因为NumPy有广播功能,所以不同形状的数组之间也可以进行运算。

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

>>> X = np.array([[5155][14,19][04]])
>>>X[0]  #第0>>>X[0][1]  #(0,1)的元紫

NumPy还可以使用数组访问各个元素。

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

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

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

补充知识
Theano对于解决大量数据的问题,使用Theano可能获得与手工用C实现差不多的性能。
相关知识扩展:https://zhuanlan.zhihu.com/p/24218567


http://www.ppmy.cn/news/360176.html

相关文章

如何使用ArcGIS加载历史影像

历史影像对研究地物的变化可以产生很直观的效果,Esri提供了在线浏览的历史影像,这里给大家介绍一下如何将这个历史影像加载到ArcGIS,希望能对你有所帮助。 获取地图链接 打开地图网站(https://livingatlas.arcgis.com/wayback/&a…

谈谈FileWriter

FileWriter 的使用方法 使用 FileWriter 写入文件需要以下步骤: 创建 FileWriter 对象,指定要写入的文件路径。使用 write(String str) 方法将数据写入文件中。关闭 FileWriter 对象。 以下是一个简单的 FileWriter 示例代码: import java.i…

J2EE1

企业级开发应用平台,主要的框架有StrutsSpringHibernate等主要框架。 J2EE是一套全然不同于传统应用开发的技术架构,包含许多组件,主要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与再用价值。 J2EE核心是一组技术…

IDM2022最新版极速下载工具

IDM可提升你的下载速度多达5倍,安排下载时程,或续传一半的软件。 IDM 声称可以提升您的下载速度高达 5 倍,可以支持断点续传,可让你自动下载指定类型的文件,还可以支持多线程下载, 其 in-speed 技术还会动…

idm+百度下载助手解决百度网盘限速

一.idm下载安装(博主预先安装chrome 浏览器) Internet Download Manager 支持所有流行的浏览器,包括:Microsoft Internet Explorer, Netscape, MS N Explorer, AOL, Opera, Mozilla, Mozilla Firefox, Mozilla Firebird, Avant Browser, MyIE2, Google …

j2ee02

Set的特点:无序、对象不能重复 打印出来的并不是按照添加顺序展示出来的 添加相同数据时只会展示出一个 ​​​​​​​ ​​​​​​​ ​​​​​​​ Set的遍历:foreach和迭代器 因为无序无下标所以不可以用下标循环遍历 常用…

myeclipse安装maven2

网友总结以及自己的经验如下: 第一种方法: windows -> preferences -> myeclipse -> maven4Eclipse -> maven 将update maven projects on startup 打上勾,(myeclipse 6.5) 第二种方法。 需要安装的…

体验MyIE2强大功能 网际畅游应用技巧集锦

体验MyIE2强大功能 网际畅游应用技巧集锦 访问次数:6050作者:伍裕标 李莉莉 来源:中国电脑教育报 MyIE2(网际畅游)是一款以IE为内核的第三方浏览器,由于其拥有十分出色的功能又易于使用&#xf…