Как объединить эти массивы на элемент, когда количество массивов формируется из цикла? - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть несколько массивов, которые будут образованы из цикла.Я знаю, что могу объединить с помощью этого метода, но я могу заставить его работать только для уже установленного числа массивов:

y1 = ['C1', 'C2', 'C3']
y2 = ['C4', 'C5', 'C6']
z = np.array([a+b for a, b in zip(y1, y2)])

, но как мне заставить его работать, если у меня есть еще много массивов, т.е. если яиметь эти массивы в качестве входных данных до массива x:

y1 = ['C1', 'C2', 'C3']
y2 = ['C4', 'C5', 'C6']
.
.
.
yx = ['C22', 'C23', 'C24']

И я хочу получить вывод:

z = ['C1C4...C22', 'C2C5...C23', 'C3C6...C24']

Ответы [ 2 ]

0 голосов
/ 23 февраля 2019

Если вы хотите использовать numpy для этой задачи, вы можете использовать функцию numpy.apply_along_axis.Рассмотрим пример:

import numpy as np
def joiner(x):
    return ''.join(x)
y1 = ['C1', 'C2', 'C3']
y2 = ['C4', 'C5', 'C6']
y = np.array([y1,y2])
z = np.apply_along_axis(joiner,0,y)
print(list(z)) #gives ['C1C4', 'C2C5', 'C3C6']

Как отмечалось выше, вам понадобится некоторая структура для хранения вашего y1,y2,... - в моем решении для этого используется np.array.Если вы хотите узнать больше о numpy.apply_along_axis, прочитайте документацию .

0 голосов
/ 23 февраля 2019

Вы можете сохранить все эти массивы в другом массиве в момент их создания, а затем zip массив, который содержит их, следующим образом:

import numpy as np
y1 = ['C1', 'C2', 'C3']
y2 = ['C4', 'C5', 'C6']
y = [y1,y2]
z = np.array(["".join(elem) for elem in zip(*y)])
print(z)

Это даст вам:

['C1C4' 'C2C5' 'C3C6']
...