1.3_(补充) NumPy 的多维数组
1.3 (补充)NumPy的多维数组
最后简单介绍一下NumPy的多维数组。多维数组是一种数值等元素按照一定规则排列的数据结构。元素的排列顺序是有方向的,这个方向叫作维或轴。图1-2是一个多维数组的示例。
标量
1
向量
1 2 3
矩阵
1 2 3
4 5 6
图1-2中从左到右依次为零维矩阵、一维矩阵、二维矩阵,它们分别叫作标量、向量和矩阵。标量就是简单的一个数。数沿着一个轴排列的是向量,数沿着两个轴排列的是矩阵。

图1-2 多维数组的示例
多维数组也叫张量。图1-2中从左到右也可以分别叫作零阶张量、一阶张量和二阶张量。
NumPy 的 ndarray 实例中有一个实例变量叫 ndim, ndim 是 number of dimensions 的缩写,表示多维数组的“维度”。下面我们实际用一用它。
>>> import numpy as np
>>> x = np.array(1)
>>> x.dim
0
>>> x = np.array([1, 2, 3])
>>> x.dim
1
>>> x = np.array([[1, 2, 3],
...
...
>>> x.dim
2上面的代码是启动了Python解释器的交互模式后,在交互模式下运行的(在交互模式下,代码前会出现>>>符号)。如上所述,通过实例变量ndim,我们可以知道数组的维度。

只有在处理向量的时候,我们才需要注意“维度”这个词。比如有一个向量np.array([1, 2, 3]),由于它有3个元素,所以也叫三维向量。向量的维度指的是向量中元素的数量。而在提到三维数组时,数组的维度是指轴(而不是元素)的数量是3。
如上所述,ndarray实例可以用来创建标量、向量、矩阵,甚至更高阶的张量。不过本书暂时只涉及标量的计算。后面(从步骤37开始)我们将扩展DeZero,使其支持向量和矩阵的处理。
步骤2
创建变量的函数
在上一步骤中,Variable类可以作为一个“箱子”使用了。不过,现在的它还只是一个“普通箱子”,我们需要一个机制把这个“普通箱子”变为“魔法箱子”。要实现这一点,关键就在于函数。本步骤的主题是函数。