Numpy expand_dims

作者 Mingjiang Shi 日期 2019-05-31
Numpy expand_dims

expand_dims

expand_dims顾名思义就是扩展向量的维度。我们还是先一个例子来理解这个吧。

向量a = [1, 2, 3, 4],其维度为1,其shape为(4,)。

执行numpu.expand_dims(a, axis=0)表示在第1维前再增加1个维度,新的向量就变成了2维。由于总的元素不变,因此新的向量的shape=(1, 4)。那新的二维向量长什么样子呢?简单来讲就是在整个向量的外面增加了一层中括号,如下:

[
[1, 2, 3, 4]
]

如果执行numpy.expand_dims(a, axis=-1),表示在最里面一层增加一个维度,新的向量的shape就变成了(4, 1)。这就相当于在最里面一层的每个元素外面增加了一层中括号,变成了

[
[1],
[2],
[3],
[4]
]

不知道你有没有看出什么规律,向量经过expand_dims处理以后,新的向量的shape中对应axis处的值就是1。

接下来,我们看一个二维向量的例子:

b = 
[
[1, 2 , 3],
[4, 5 , 6]
]

b的shape是(2, 3),expand_dims(b, axis=0)以后,其shape就变成了(1, 2, 3)。expand_dims(b, axis=-1)后的shape为(2, 3, 1)。这两个都比较好理解,和上门1维中差不多。

expand_dims(b, axis=1)后的shape维(2, 1, 3),新的向量就是在第2维的外面增加一层中括号。如下:

[
[
[1, 2 , 3]
],
[
[4, 5 , 6]
]
]

总结一下,从方便理解和记忆的角度看,向量经过expand_dims以后,其维度增加1。新向量的shape中对应axis处的值为1,向量中元素个数(size)不变。新的向量直观上来看,就是在对于axis的外层增加了一层中括号。