连接2D numpy数组中的字符串

时间:2017-08-21 14:00:00

标签: python numpy multidimensional-array python-3.5

我想连接一个像这样的2d numpy数组的字符串,

for x in np.ndindex(mat.shape[0]):
    concat = ""
    for y in range(len(columns)):
        concat += str(mat[x][2 + y])

其中mat是在每个单元格中包含stringint s的二维数组,columnsmat的列名列表,例如['A', 'B', 'C', 'D'],使用mat[x][2 + y]来避免连接前两列的字符串。我想知道最好的方法是什么,可能是以更简洁/有效的方式。

2 个答案:

答案 0 :(得分:2)

你对 concatenate 的定义有点模糊 - 我希望以下内容足以让你开始

print('\n'.join(' '.join(str(x) for x in row[2:]) for row in mat))

外部join使用换行连接行,内部加入 mat中每行的元素的几个 - 如果你不是在除了前两个之外的所有元素之后,修改以取悦你切片的上限...

请注意,str(x)会使字符串元素不受干扰,并以合理的方式格式化数字项。

答案 1 :(得分:1)

Ab - 假设我们正在处理2D数组,我们可以只使用一个循环 -

["".join(i) for i in mat[:,2:].astype(str)]

示例运行 -

In [143]: mat
Out[143]: 
array([[1, 1, 0, 3, 1, 1],
       [3, 0, 1, 1, 1, 0],
       [2, 2, 1, 2, 1, 1]])

In [144]: ["".join(i) for i in mat[:,2:].astype(str)]
Out[144]: ['0311', '1110', '1211']