【问题标题】:combining arrays of different shapes组合不同形状的数组
【发布时间】:2023-03-21 15:10:01
【问题描述】:

我有 2 个数组,我想将它们组合成一个数组。 第一个数组如下所示:

array_a = [1,2,3,4,5]

第二个数组如下所示:

array_b = [[2, 4, 8, 16, 32], [3, 9, 27, 81, 243], [4, 16, 64, 256, 1024],
           [5, 25, 125, 625, 3125]]

我希望合并后的结果如下所示:

array_c = [[1,2],[1,4],[1,8],[1,16],[1,32],[2,3],[2,9],[2,27],[2,81],
           [2,243],[3,4],[3,16],[3,64],[3,256],[3,1024].....etc.]

我已经为此苦苦挣扎了一天,非常感谢任何帮助。

【问题讨论】:

  • 您希望5 发生什么?它只是被忽略了吗?
  • 抱歉 array_b[2] 和 array_b[3] 包括在内。写起来很乏味,所以我省略了。

标签: python python-3.x arraylist


【解决方案1】:

这是一种只用 for 循环就可以做到的方法

for x in range(min(len(array_a), len(array_b))):
    for b in array_b[x]:
        array_c.append([array_a[x], b])

我必须添加额外的最小值,因为第一个数组中有五个元素,第二个数组只有四个

【讨论】:

    【解决方案2】:

    您可以通过不太难的列表理解来做到这一点:

    In []:
    [(x, z) for x, y in zip(array_a, array_b) for z in y]
    
    Out[]:
    [(1, 2), (1, 4), (1, 8), (1, 16), (1, 32), (2, 3), (2, 9), (2, 27), (2, 81),
     (2, 243), (3, 4), (3, 16), (3, 64), (3, 256), (3, 1024), (4, 5), (4, 25),
     (4, 125), (4, 625), (4, 3125)]
    

    由于array_b 中只有4 元素,array_a 中的5 被忽略。

    【讨论】:

      【解决方案3】:

      可能有一种更简洁的方法,但这应该可行。

      array_a = [1, 2, 3, 4, 5]
      array_b = [[2, 4, 8, 16, 32], [3, 9, 27, 81, 243], [4, 16, 64, 256, 1024], [5, 25, 125, 625, 3125]]
      
      array_c = list()
      for a, bs in zip(array_a, array_b):
          array_c += [[a, b] for b in bs]
      
      print(array_c)
      

      【讨论】:

        猜你喜欢
        • 2020-04-04
        • 2021-08-19
        • 2020-08-23
        • 2019-10-02
        • 1970-01-01
        • 2014-02-15
        • 2017-11-07
        • 1970-01-01
        • 2020-07-14
        相关资源
        最近更新 更多