《PyTorch 深度学习实战》学习笔记 --NumPy(上)
核心数据结构详解
什么是 Numpy?
NumPy 是用于 Python 中科学计算的一个基础包。它提供了一个多维度的数组对象(稍后展开),以及针对数组对象的各种快速操作,例如排序、变换,选择等。
用 conda 安装 NumPy 的命令:
由于我们之前已经安装过 PyTorch 了,numpy 自然也自动安装好了,通过 pip list 或者 conda list 可以查看到。
NumPy 数组
NumPy 数组从逻辑上来看,与其他编程语言中的数组是一样的,索引也是从 0 开始。而 Python 中的列表,其实也可以达到与 NumPy 数组相同的功能,但它们又有差异,做个对比你就能体会到 NumPy 数组的特点了。
Python 中的列表可以动态地改变,而 NumPy 数组是不可以的,它在创建时就有固定大小了。改变 Numpy 数组长度的话,会新创建一个新的数组并且删除原数组。
NumPy 数组中的数据类型必须是一样的,而列表中的元素可以是多样的。
NumPy 针对 NumPy 数组一系列的运算进行了优化,使得其速度特别快,并且相对于 Python 中的列表,同等操作只需使用更少的内存。
NumPy 数组的创建
最简单的方法就是把一个列表传入到 np.array() 或 np.asarray() 中,这个列表可以是任意维度的。np.array() 属于深拷贝,np.asarray() 则是浅拷贝。
数组的属性
ndim: ndim 表示数组维度(或轴)的个数。刚才创建的数组 arr_1_d 的轴的个数就是 1,arr_2_d 的轴的个数就是 2。
shape: shape 表示数组的维度或形状, 是一个整数的元组,元组的长度等于 ndim。arr_1_d 的形状就是(1,)(一个向量), arr_2_d 的形状就是 (2, 2)(一个矩阵)。
在实际的工作当中,我们经常需要对数组的形状进行变换,就可以使用 arr.reshape() 函数,在不改变数组元素内容的情况下变换数组的形状。但是你需要注意的是,变换前与变换后数组的元素个数需要是一样的。
size:size,也就是数组元素的总数,它就等于 shape 属性中元素的乘积。
dtype: 它是一个描述数组中元素类型的对象。使用 dtype 属性可以查看数组所属的数据类型。
我们可以使用 astype() 改变数组的数据类型,不过改变数据类型会创建一个新的数组,而不是改变原数组的数据类型。
其他方式
np.ones() 用来创建一个全 1 的数组,必须参数是指定数组的形状,可选参数是数组的数据类型。创建全 0 的数组是 np.zeros()。
们还可以使用 np.arange([start, ]stop, [step, ]dtype=None) 创建一个在[start, stop) 区间的数组,元素之间的跨度是 step。
我们也可以用 np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)创建一个数组,具体就是创建一个从开始数值到结束数值的等差数列。
start:必须参数,序列的起始值。
stop:必须参数,序列的终点。
num:序列中元素的个数,默认是 50。
endpoint:默认为 True,如果为 True,则数组最后一个元素是 stop。
retstep:默认为 False,如果为 True,则返回数组与公差。
学习来源:极客时间
我们今天的内容就是这些了,如果对你有所帮助欢迎转发给你的朋友。
我是 Tango,一个热于分享的程序猿我们下期见
版权声明: 本文为 InfoQ 作者【IT蜗壳-Tango】的原创文章。
原文链接:【http://xie.infoq.cn/article/859500b9c21074e4200bb972b】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论