首页 > 解决方案 > 从对列表中生成两个数组

问题描述

假设我有以下数组

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]

标签: pythonarrayslistnumpy

解决方案


您可以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)

np.repeat由于 numpy 被标记,您可以使用和直接生成所需的数据np.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])

推荐阅读