如何将2D数组“切片”为3D数组

时间:2019-05-28 12:45:12

标签: python numpy

我有一个看起来像这样的数组: test = np.zeros (7110, 514)

我需要将前90个值(行)“解包”为第二维的第一个值,再将后90个值(行)“解包”为第二维的第二个值,依此类推,这样所需的输出将具有形状:

desired_output = np.zeros(90, 79, 514)

我尝试过类似的操作:

a = np.split(test, 90, axis=1)
test1 = np.reshape(a, (79,90, 514))

但这只是把我拖了整条兔子……谢谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我不知道我是否理解这个问题,您是否有7110行,每行514个元素,并且想将7110行“分组”为90 x 79行?

因为这样您可以执行以下操作:

>>> np.array(range(24)).reshape((6, 4))
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15],
       [16, 17, 18, 19],
       [20, 21, 22, 23]])

这些是6行,每行4个元素。

>>> np.array(range(24)).reshape((6, 4)).reshape(3, 2, 4)
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7]],

       [[ 8,  9, 10, 11],
        [12, 13, 14, 15]],

       [[16, 17, 18, 19],
        [20, 21, 22, 23]]])

我们按原样保留行,但得到3x2行而不是6行。

所以您需要的代码就是:

desired_output = a.reshape(90, 79, 514)