【问题标题】:Losing dimensions of a numpy array丢失 numpy 数组的维度
【发布时间】:2015-07-29 00:03:45
【问题描述】:

我有一个 numpy 数组,它由列表组成,每个列表都包含更多列表。我一直在尝试找出一种智能且快速的方法来使用 numpy 折叠这些列表的维度,但没有任何运气。

我的样子是这样的:

>>> np.shape(projected)
(13,)
>>> for i in range(len(projected)):
    print np.shape(projected[i])
(130, 3200)
(137, 3200)
.
.
(307, 3200)
(196, 3200)

我想要得到的是一个包含所有子列表的列表,长度为 130+137+..+307+196。我试过使用np.reshape(),但它给出了一个错误:ValueError: total size of new array must be unchanged

np.reshape(projected,(total_number_of_lists, 3200))
>> ValueError: total size of new array must be unchanged

我一直在摆弄np.vstack,但无济于事。任何不包含 for 循环和 .append() 的帮助将不胜感激。

【问题讨论】:

    标签: python arrays performance numpy multidimensional-array


    【解决方案1】:

    看来你可以像这样沿第一轴使用np.concatenate axis=0 -

    np.concatenate(projected,0)
    

    示例运行 -

    In [226]: # Small random input list
         ...: projected = [[[3,4,1],[5,3,0]],
         ...:              [[0,2,7],[8,2,8],[7,3,6],[1,9,0],[4,2,6]],
         ...:              [[0,2,7],[8,2,8],[7,3,6]]]
    
    In [227]: # Print nested lists shapes
         ...: for i in range(len(projected)):
         ...:     print (np.shape(projected[i]))
         ...:     
    (2, 3)
    (5, 3)
    (3, 3)
    
    In [228]: np.concatenate(projected,0)
    Out[228]: 
    array([[3, 4, 1],
           [5, 3, 0],
           [0, 2, 7],
           [8, 2, 8],
           [7, 3, 6],
           [1, 9, 0],
           [4, 2, 6],
           [0, 2, 7],
           [8, 2, 8],
           [7, 3, 6]])
    
    In [232]: np.concatenate(projected,0).shape
    Out[232]: (10, 3)
    

    【讨论】:

      猜你喜欢
      • 2015-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-04
      • 2011-04-02
      相关资源
      最近更新 更多