In [415]: arr = np.array([['1', '2', ''],['3' ,'4', ''],['5', '6' ,'']])
...:
In [416]: arr
Out[416]:
array([['1', '2', ''],
['3', '4', ''],
['5', '6', '']], dtype='<U1')
Just take a column slice:
In [417]: arr[:, :-1]
Out[417]:
array([['1', '2'],
['3', '4'],
['5', '6']], dtype='<U1')
This produces a new array, but that's normal with numpy. Most numpy actions, especially ones that change size/shape, do that.
The OP display of arr is consistent with it being numpy array. However for copy-n-paste the repr display is better.
In [418]: print(arr)
[['1' '2' '']
['3' '4' '']
['5' '6' '']]