np.concatenate un tensor / matriz ND con una matriz 1D

Tengo dos matrices a y b

a.shape
(5, 4, 3)
array([[[ 0.        ,  0.        ,  0.        ],
        [ 0.        ,  0.        ,  0.        ],
        [ 0.        ,  0.        ,  0.        ],
        [ 0.10772717,  0.604584  ,  0.41664413]],

       [[ 0.        ,  0.        ,  0.        ],
        [ 0.        ,  0.        ,  0.        ],
        [ 0.10772717,  0.604584  ,  0.41664413],
        [ 0.95879616,  0.85575133,  0.46135877]],

       [[ 0.        ,  0.        ,  0.        ],
        [ 0.10772717,  0.604584  ,  0.41664413],
        [ 0.95879616,  0.85575133,  0.46135877],
        [ 0.70442301,  0.74126523,  0.88965603]],

       [[ 0.10772717,  0.604584  ,  0.41664413],
        [ 0.95879616,  0.85575133,  0.46135877],
        [ 0.70442301,  0.74126523,  0.88965603],
        [ 0.8039435 ,  0.62802183,  0.58885027]],

       [[ 0.95879616,  0.85575133,  0.46135877],
        [ 0.70442301,  0.74126523,  0.88965603],
        [ 0.8039435 ,  0.62802183,  0.58885027],
        [ 0.95848603,  0.72429311,  0.71461332]]])

y B

array([ 0.79212707,  0.66629398,  0.58676553], dtype=float32)
b.shape
(3,)

Quiero obtener una matriz

ab.shape
(5,5,3)

Primero hago lo siguiente

b = b.reshape(1,1,3)

entonces

b=np.concatenate((b, b,b, b, b), axis = 0)

Y

ab=np.concatenate((a, b), axis = 1)
ab.shape
(5, 5, 3)

Obtengo el resultado correcto, pero no es muy conveniente, especialmente en el paso

b=np.concatenate((b, b,b, b, b), axis = 0)

cuando tengo que escribir muchas veces (el conjunto de datos real tiene muchas dimensiones). ¿Hay alguna forma más rápida de llegar a este resultado?

Respuestas a la pregunta(1)

Su respuesta a la pregunta