2017-08-21 278 views
1

欲從2D numpy陣列這樣將字符串,連接字符串

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

其中mat是含有string S或int S IN的每個小區的2D陣列,columns是一個mat的列名列表,例如['A', 'B', 'C', 'D'],使用mat[x][2 + y]來避免連接來自前兩列的字符串。我想知道做什麼最好的方法,可能是以更簡潔/有效的方式。

回答

2

您已經在連擊的定義已經有點模糊的 - 我希望下面就足以讓你開始

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

外部join以換行符加入行內一個加入 每一行的元素的mat - 如果你除了前兩個的所有元素之後都沒有了,修改就拜託你了切片的上限...

請注意str(x)使字符串元素不受干擾並以合理的方式格式化數字項目。

1

抗體 - 使用我們正在處理一個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']