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

时间:2016-09-10 17:01:44

标签: python arrays numpy dimensions

我有一个大小(214,144)的数组。我需要它(214,144,1)有没有办法在Python中轻松完成这项工作?基本上尺寸应该是(天,时间,站)。由于我只有1个站点的数据,因此维度为1.然而,如果我还可以使代码足够灵活,那么说2个站点会很好(例如将维度大小从(428,288)更改为(214,144) ,2))那将是伟大的!

2 个答案:

答案 0 :(得分:5)

您可以使用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 :(得分:1)

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

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

<强>解释

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

2)要指定尺寸的细分,并自动计算最后尺寸的大小,请使用-1作为最后尺寸的尺寸。 e.g:

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))