写点什么

《PyTorch 深度学习实战》学习笔记 --NumPy(上)

作者:IT蜗壳-Tango
  • 2023-01-10
    江苏
  • 本文字数:1272 字

    阅读完需:约 4 分钟

核心数据结构详解

什么是 Numpy?

NumPy 是用于 Python 中科学计算的一个基础包。它提供了一个多维度的数组对象(稍后展开),以及针对数组对象的各种快速操作,例如排序、变换,选择等。

用 conda 安装 NumPy 的命令:

conda install 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() 则是浅拷贝。

import numpy as nparr_1_d = np.asarray([1])print(arr_1_d)arr_2_d = np.asarray([[1, 2], [3, 4]])print(arr_2_d)
复制代码


数组的属性

  • 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,一个热于分享的程序猿我们下期见

发布于: 刚刚阅读数: 7
用户头像

一个日语专业的程序猿。 2017-09-10 加入

【坐标】无锡 【软件技能】Java,C#,Python 【爱好】炉石传说 【称号】InfoQ年度人气作者,Intel OpenVINO领航者联盟成员 【B站】https://space.bilibili.com/397260706/ 【个人站】www.it-worker.club

评论

发布
暂无评论
《PyTorch 深度学习实战》学习笔记 --NumPy(上)_IT蜗壳-Tango_InfoQ写作社区