【问题标题】:Generate two arrays from a list of pairs从对列表中生成两个数组
【发布时间】:2021-09-10 14:39:46
【问题描述】:

假设我有以下数组

a = [1, 2, 3]
b = [4, 5, 6]

我创建了列表

c = [(1,4), (1,5), (1,6), (2,4), (3,5), (2,6), (3,4), (3,5), (3,6)]

如何创建如下两个列表:

a = [1, 1, 1, 2, 2, 2, 3, 3, 3]
b = [4, 5, 6, 4, 5, 6, 4, 5, 6]

【问题讨论】:

    标签: python arrays list numpy


    【解决方案1】:

    你可以zip在这里解包元组。

    a, b = zip(*c)
    print(a) # (1, 1, 1, 2, 3, 2, 3, 3, 3)
    print(b) # (4, 5, 6, 4, 5, 6, 4, 5, 6)
    

    由于 numpy 被标记,所以可以直接使用np.repeatnp.tile生成需要的数据

    a = [1, 2, 3]
    b = [4, 5, 6]
    
    a = np.repeat(a, 3)
    b = np.tile(b, (3, ))
    print(a) # array([1, 1, 1, 2, 2, 2, 3, 3, 3])
    print(b) # array([4, 5, 6, 4, 5, 6, 4, 5, 6])
    

    【讨论】:

      【解决方案2】:
      a=[]
      b=[]
      for i in c:
         a.append(i[0])
         b.append(i[1])
      

      【讨论】:

        【解决方案3】:

        将c转换为numpy数组,第一列为第二列为b

        c = np.array(c)
        a = c[:, 0]
        b = c[:, 1]
        

        【讨论】:

          猜你喜欢
          • 2014-07-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多