Numpy:数据的维度


数据的维度

多维Numpy数组也可以叫张量(tensor)。当前所有机器学习系统都是使用张量作为基本数据结构,张量是一个数据容器,它包含的数据几乎是数值数据,因此它也是数字的容器。我们都熟悉矩阵,矩阵是二维数组(二维张量)。张量是矩阵向任意维度的推广。张量的维度(dimension)通常叫作轴(axis)。

数据的维度如图所示:
在这里插入图片描述

1.标量(0D张量)

仅包含一个数字的张量叫作标量(scalar,也叫作标量张量、零维张量、0D张量)。在Numpy中,一个float32或float64的数字就是一个标量张量(或标量数组)。上图中无0D张量。

>>> import numpy as np
>>> a = np.array(12)
>>> a
array(12)
>>> a.ndim
0

2.向量(一维数组、1d-tensor)

数字组成的数组叫作向量(vector)或一维张量(1D张量)。一维张量只有一个轴。

>>> import numpy as np
>>> a = np.array([12,3,5,7])
>>> a
array([12,3,5,7])
>>> a.ndim # 数组维度(维数、轴数、秩)
1

3. 二维数组(2d-tensor)

向量组成的数组叫作二维数组(2D张量)。有2个轴(通常叫作行和列)。

>>> import numpy as np
>>> a = np.array([[12,3,5,7],[11,2,4,6],[10,8,6,7]])
>>> a
array([[12,  3,  5,  7],
       [11,  2,  4,  6],
       [10,  8,  6,  7]])
>>> a.ndim # 数组维度(维数、轴数、秩)
2

第一个轴上的元素叫作行(row),第二个轴上的元素叫作列(column)。

4. 三维数组(3d-tensor)

将多个二维数组组合成一个新的数组,可以得到一个三维数组,可以将其值观的理解为数字组成的立方体。

>>> import numpy as np
>>> a = np.arange(1,28).reshape(3,3,3)
>>> a
array([[[ 1,  2,  3],
        [ 4,  5,  6],
        [ 7,  8,  9]],

       [[10, 11, 12],
        [13, 14, 15],
        [16, 17, 18]],

       [[19, 20, 21],
        [22, 23, 24],
        [25, 26, 27]]])

三维数据形状如图:
在这里插入图片描述
时间序列数据或序列数据,图像数据均为三维数组。一张图像通常具有三个维度:高度、宽度、和颜色深度。灰度图像只有一个颜色通道,可以保存为二维。但按照惯例,图像张量始终都是3D张量,如图:
在这里插入图片描述
一种颜色构成一个二维数组(2d-tensor),三种颜色(RBG)三个二维数组构成一个三维数组(3d-tensor),构成了彩色图像。
将多个3d-tensor组合成,可以创建一个4d-tensor。如图所示,多个彩色图像构成四维数组(4d-tensor):
在这里插入图片描述
以此类推,深度学习处理的一般是0D到4D的张量,但是处理视频数据也可能遇到5D张量。


版权声明:本文为shield911原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。