異なるshapeのndarrayを,新しい軸を追加した状態で連結するにはどうすればよいでしょうか?

例えば,2つの異なるshape(列数は等しい)の2次元配列

a = array([[1,1,1,1],
           [1,1,1,1],
           [1,1,1,1]])

b = array([[2,2,2,2],
           [2,2,2,2]])

を縦方向に連結して,

array([[[1,1,1,1],
        [1,1,1,1],
        [1,1,1,1]],
       [[2,2,2,2],
        [2,2,2,2]]])

というような3次元のndarray配列を作りたいです.
np.vstackで連結すると,新しい軸が追加されないため連結したものも2次元配列になってしまいます.

具体的には,クラス分類用のデータセットとして画像データをndarray形式で読み込んだとき,256次元(ここはそろっている)*?(ここはクラスごとに異なる)のようになっている各クラスの配列を1つのデータとしてまとめたい(しかしクラスごとにインデックスでアクセスしやすいように3次元配列になっている)というようなことを実現したいです.

よろしくお願いします.