通过循环形成数组的数量时,如何将每个元素的这些数组连接起来?

时间:2019-02-23 17:51:18

标签: python arrays numpy concatenation string-concatenation

我有一堆将由循环形成的数组。我知道我可以通过这种方法进行连接,但是我只能使它对已经建立的数组起作用:

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 :(得分:1)

您可以在创建所有这些数组时将它们存储在另一个数组中,然后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']

答案 1 :(得分:1)

如果您想使用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,请阅读其documentation