Your a,b,c are lists; you'd have to use np.array([1,2,3]) to get an array, and it will display as [1 2 3] (without the commas).
Simply creating a new list from those lists produces a list of lists
In [565]: d=[a,b,c]
In [566]: d
Out[566]:
[[1, 2, 3, 4, 5],
[3, 2, 2, 2, 8],
['test1', 'test2', 'test3', 'test4', 'test5']]
and simply concatenating the lists produces one longer one
In [567]: a+b+c
Out[567]: [1, 2, 3, 4, 5, 3, 2, 2, 2, 8, 'test1', 'test2', 'test3', 'test4', 'test5']
numpy arrays have problems containing both numbers and strings. You have to make a 'structured array'.
The easiest way to combine these into one array is with a fromarrays utility function:
In [561]: x=np.rec.fromarrays(([1,2,3],[3,2,2],['test1','test2','test3']))
In [562]: x['f0']
Out[562]: array([1, 2, 3])
In [563]: x['f2']
Out[563]:
array(['test1', 'test2', 'test3'],
dtype='<U5')
In [568]: x
Out[568]:
rec.array([(1, 3, 'test1'), (2, 2, 'test2'), (3, 2, 'test3')],
dtype=[('f0', '<i4'), ('f1', '<i4'), ('f2', '<U5')])
or with a little editing of the display:
In [569]: print(x)
[(1, 3, 'test1')
(2, 2, 'test2')
(3, 2, 'test3')]
This is not a 2d array; it's 1d (here 3 elements) with 3 fields.
Perhaps the easiest way to format this array in a way that looks like your spec would be with a csv writer:
In [570]: np.savetxt('x.txt',x,fmt='%d %d %s;')
In [571]: cat x.txt # shell command to display the file
1 3 test1;
2 2 test2;
3 2 test3;
;is part of a display, not a data structure.