我有以下数组(长度都相同):
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条记录上完成,所以我在寻找一些紧凑的东西。
发布于 2018-04-02 23:25:26
使用zip()隔离列,使用str()为每个元素创建字符串,使用str.join()将经过stringified的元素连接在一起。
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']发布于 2018-04-02 23:39:17
使用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()才有效。
发布于 2018-04-02 23:41:49
在我看来,您似乎希望拥有一个新的字符串数组,其中包含all arrays中某个位置的元素。如果数组的数量很少,下面的代码应该是可能的解决方案:
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并遍历数组列表。
https://stackoverflow.com/questions/49613958
复制相似问题