【问题标题】:How to convert 1D list to 2D list without using loop? [duplicate]如何在不使用循环的情况下将一维列表转换为二维列表? [复制]
【发布时间】:2020-06-25 20:03:40
【问题描述】:

我有一个浮动列表:

[1.0, 2.0, 3.0, 4.0] 

如何将此列表重塑为多维数组,例如:

[[1.0, 1.0, 1.0], [2.0, 2.0, 2.0], [3.0, 3.0, 3.0], [4.0, 4.0 ,4.0]]

不使用循环?是否可以使用numpy 或其他任何方式?

【问题讨论】:

  • 使用np.broadcast_to(arr[:, None], (4, 3))。比repeat 好多了。我会找到骗子

标签: python arrays list numpy


【解决方案1】:

如果你不使用 numpy 也能活下来:

orig = [1.0, 2.0, 3.0, 4.0]
N = 3
matrix = [[n]*N for n in orig]

【讨论】:

    【解决方案2】:

    如果你从一个 NumPy 数组开始,你可以使用numpy.repeat() 然后reshape() 来获得你想要的数组大小/形状:

    > import numpy as np
    
    > a = np.array([1.0, 2.0, 3.0, 4.0])
    
    > np.repeat(a, 3).reshape(-1, 3) 
    
    array([[1., 1., 1.],
           [2., 2., 2.],
           [3., 3., 3.],
           [4., 4., 4.]])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-06
      • 2022-12-29
      • 1970-01-01
      • 2021-12-18
      • 2018-08-05
      • 2023-03-31
      • 2011-12-04
      • 2017-11-18
      相关资源
      最近更新 更多