I get an error trying to run your sample:
In [393]: my_array = np.array([[1,1,food,5],
...: [[2,1,food,5],
...: [2,2,clothes,10]]])
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-393-0a4854c57a22> in <module>()
----> 1 my_array = np.array([[1,1,food,5],
2 [[2,1,food,5],
3 [2,2,clothes,10]]])
4 second_array = np.array ([[3,5,water,3],
5 [3,2,tea, 8],
NameError: name 'food' is not defined
changing the names to strings:
In [394]: my_array = np.array([[1,1,'food',5],
...: [[2,1,'food',5],
...: [2,2,'clothes',10]]])
...: second_array = np.array ([[3,5,'water',3],
...: [3,2,'tea', 8],
...: [3,4,'pop', 5]])
...:
In [395]: my_array
Out[395]:
array([list([1, 1, 'food', 5]),
list([[2, 1, 'food', 5], [2, 2, 'clothes', 10]])], dtype=object)
In [396]: second_array
Out[396]:
array([['3', '5', 'water', '3'],
['3', '2', 'tea', '8'],
['3', '4', 'pop', '5']], dtype='<U21')
Those are two vary different kinds of arrays. It doesn't make sense to try to join them in any way.
If I clean up the brackets on the first:
In [397]: my_array = np.array([[1,1,'food',5],
...: [2,1,'food',5],
...: [2,2,'clothes',10]])
In [398]: my_array
Out[398]:
array([['1', '1', 'food', '5'],
['2', '1', 'food', '5'],
['2', '2', 'clothes', '10']], dtype='<U21')
Now I have 2 arrays with the same dtype and shape, which can be joined in various ways:
In [399]: np.stack((my_array, second_array))
Out[399]:
array([[['1', '1', 'food', '5'],
['2', '1', 'food', '5'],
['2', '2', 'clothes', '10']],
[['3', '5', 'water', '3'],
['3', '2', 'tea', '8'],
['3', '4', 'pop', '5']]], dtype='<U21')
In [400]: np.vstack((my_array, second_array))
Out[400]:
array([['1', '1', 'food', '5'],
['2', '1', 'food', '5'],
['2', '2', 'clothes', '10'],
['3', '5', 'water', '3'],
['3', '2', 'tea', '8'],
['3', '4', 'pop', '5']], dtype='<U21')
We could specify a object dtype when creating the 2 array.
(my_array.tolist(), second_array.tolist()), but your description is not quite that