如何将元素作为字符串与一组数组中的分隔符按列连接

时间:2018-04-02 15:22:41

标签: python string-concatenation

我有以下数组(长度相同):

array_1=[1,2,3]
array_2=[4,5,6]
array_3=[7,8,9]

我需要的是连接两个数组中的每个元素以获得:

array_4=['1-4-7','2-5-8','3-6-9']

这必须在大约30000条记录上完成,所以我一直在寻找紧凑的东西。

4 个答案:

答案 0 :(得分:6)

使用zip()隔离列,str()从每个元素创建字符串,str.join()将字符串化元素连接在一起。

array_1=[1,2,3]
array_2=[4,5,6]
array_3=[7,8,9]

meta_array = [array_1, array_2, array_3]
array_4 = ['-'.join(str(item) for item in column) for column in zip(*meta_array)]

assert array_4==['1-4-7','2-5-8','3-6-9']

答案 1 :(得分:1)

使用numpy.column_stack()的另一种方式:

import numpy as np
array_1=[1,2,3]
array_2=[4,5,6]
array_3=[7,8,9]

col_stacked = np.column_stack([array_1, array_2, array_3])
print(col_stacked)
#array([[1, 4, 7],
#       [2, 5, 8],
#       [3, 6, 9]])

现在只需遍历col_stacked并使用"-"加入值。首先,我们需要将值转换为str,这可以使用map()

来完成
array_4 = ["-".join(map(str, a)) for a in col_stacked]
print(array_4)
#['1-4-7', '2-5-8', '3-6-9']

注意column_stack()仅在所有数组具有相同长度时才有效。

答案 2 :(得分:1)

在我看来,你想要一个新的字符串数组,其中包含来自所有数组的特定位置的元素。如果数组的数量很少,则以下代码应该是可能的解决方案:

for index in range(len(array_1)):
    newFormedElement = str(array_1[index]) + '-' + str(array_2[index]) + '-' + str(array_3[index])
    array_4.append(newFormedElement)

假设通过记录,表示数组中的元素数量。 但是,如果您正在使用30000阵列,则可能需要使用numpy并在整个阵列列表中进行迭代。

答案 3 :(得分:0)

您可以使用字符串格式:

array_1=[1,2,3]
array_2=[4,5,6]
array_3=[7,8,9]
last_result = ['{}-{}-{}'.format(*i) for i in zip(array_1, array_2, array_3)]

输出:

['1-4-7', '2-5-8', '3-6-9']