I working on different shapes of arrays and I want to save them all with numpy.save, so, consider I have  
mat1 = numpy.arange(8).reshape(4, 2)
mat2 = numpy.arange(9).reshape(2, 3)
numpy.save('mat.npy', numpy.array([mat1, mat2]))
It works. But when I have two matrices with one dimension of same size it's not working.
mat1 = numpy.arange(8).reshape(2, 4)
mat2 = numpy.arange(10).reshape(2, 5)
numpy.save('mat.npy', numpy.array([mat1, mat2]))
It causes
Traceback (most recent call last):
  File "<input>", line 1, in <module>
ValueError: could not broadcast input array from shape (2,4) into shape (2)
And note that the problem caused by numpy.array([mat1, mat2]) and not by numpy.save
I know that such array is possible:
>> numpy.array([[[1, 2]], [[1, 2], [3, 4]]])
    array([[[1, 2]], [[1, 2], [3, 4]]], dtype=object)
So, all of what I want is to save two arrays as mat1 and mat2 at once.

np.savezor pickle with a binary protocol instead?savezsaves multiple arrays,saveonly saves a single array.mat1andmat2are the same,np.array(...)produces this error. You can get around this error by initializing anp.empty((2,),object)array, and filling it with the element arrays. Also do that if all the dimensions are the same (to prevent concatenation).