Создайте два массива из списка пар

#python #arrays #list #numpy

Вопрос:

Предположим, у меня есть следующие массивы

 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]
 

Ответ №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.repeat и 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])
 

Ответ №2:

 a=[]
b=[]
for i in c:
   a.append(i[0])
   b.append(i[1])
 

Ответ №3:

Преобразуйте c в массив numpy, первый столбец-это a, второй столбец-b

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