当数组的数量由循环形成时,如何按元素连接这些数组?

How to concatenate these arrays per element when the number of arrays are formed from a loop?

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

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']

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

如果您想使用 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