Extender diferentes formas / matrices de dimensión en python

Quiero hacer dos matrices de igual dimensión / forma de relleno con ceros ..

porque por ejemplo tengo

>>> x array([[ 1., -1., 1.], [ 1., 1., - 1.]]) >>> >>> >>> y array([[ 2., 2.], [ 2., 2.], [ -2., 2.]]) 

Salida que quiero

 x1 = array([[ 1., -1., 1.], [ 1., 1., -1.], [ 0., 0., 0.]]) y1 =array([[ 2., 2., 0.], [ 2., 2., 0.], [ -2., 2., 0.]]) 

¿alguna ayuda? Busqué el “pad” pero la versión numpy que estamos usando es más antigua, así que no tiene pad. (Numpy ver. 1.6.x)

También busqué algunas soluciones, pero son específicas de la forma, en mi caso, la forma es dinámica, y la operación debe ser rápida, ya que lo hago sobre grandes matrices y muchas veces

Cada matriz tiene una shape :

 >>> x = np.array([[ 1., -1., 1.], ... [ 1., 1., - 1.]]) >>> y = np.array([[ 2., 2.], ... [ 2., 2.], ... [ -2., 2.]]) >>> x.shape (2, 3) >>> y.shape (3, 2) 

Solo necesitamos calcular la “forma máxima” y usarla para las nuevas matrices:

 >>> shape = np.maximum(x.shape, y.shape) >>> x1 = np.zeros(shape) 

Luego podemos copiar los datos de las matrices originales en las partes correspondientes de las nuevas matrices:

 >>> x1[:x.shape[0], :x.shape[1]] = x >>> y1 = np.zeros(shape) >>> y1[:y.shape[0], :y.shape[1]] = y 

Resultados

 >>> x1 array([[ 1., -1., 1.], [ 1., 1., -1.], [ 0., 0., 0.]]) >>> y1 array([[ 2., 2., 0.], [ 2., 2., 0.], [-2., 2., 0.]]) >>>