如何在 Python 中向 numpy 数组添加维度

How to add a dimension to a numpy array in Python

我有一个大小为 (214, 144) 的数组。我需要它是 (214,144,1) 有没有办法在 Python 中轻松做到这一点?基本上尺寸应该是(天,时间,站)。因为我只有 1 个站的数据,维度将是 1。但是,如果我还可以使代码足够灵活地工作,比如 2 个站,那就太好了(例如,将维度大小从 (428,288) 更改为 (214,144,2))那太好了!

您可以使用 reshape:

>>> a = numpy.array([[1,2,3,4,5,6],[7,8,9,10,11,12]])
>>> a.shape
(2, 6)
>>> a.reshape((2, 6, 1))
array([[[ 1],
        [ 2],
        [ 3],
        [ 4],
        [ 5],
        [ 6]],

       [[ 7],
        [ 8],
        [ 9],
        [10],
        [11],
        [12]]])
>>> _.shape
(2, 6, 1)

除了将形状从 (x, y) 更改为 (x, y, 1) 之外,您还可以使用 (x, y/n, n),但您可能希望根据输入指定列顺序:

>>> a.reshape((2, 3, 2))
array([[[ 1,  2],
        [ 3,  4],
        [ 5,  6]],

       [[ 7,  8],
        [ 9, 10],
        [11, 12]]])
>>> a.reshape((2, 3, 2), order='F')
array([[[ 1,  4],
        [ 2,  5],
        [ 3,  6]],

       [[ 7, 10],
        [ 8, 11],
        [ 9, 12]]])

1) 向任意维度的数组 a 添加维度:

b = numpy.reshape (a, list (numpy.shape (a)) + [1])

解释:

您得到 a 的形状,将其转换为列表,将 1 连接到该列表,并使用该列表作为 reshape 操作中的新形状。

2) 要指定维度的细分,并自动计算最后一个维度的大小,请使用 -1 作为最后一个维度的大小。例如:

b = numpy.reshape(a, [numpy.size(a,0)/2, numpy.size(a,1)/2, -1])

在这种情况下 b 的形状将是 [214,144,4]


(显然,如有必要,您可以结合使用这两种方法):

b = numpy.reshape (a, numpy.append (numpy.array (numpy.shape (a))/2, -1))