vector matrix numpy

Añadiendo un vector a las filas de la matriz en numpy



matrix (1)

Para agregar una matriz 1d a cada fila, la transmisión ya se encarga de las cosas:

mat += vec

Sin embargo, de manera más general, puede usar np.newaxis para forzar la matriz a una forma de difusión. Por ejemplo:

mat + np.ones(3)[np.newaxis,:]

Si bien no es necesario para agregar la matriz a cada fila, esto es necesario para hacer lo mismo para la adición por columnas:

mat + np.ones(5)[:,np.newaxis]

EDITAR: como Sebastian menciona, para la adición de filas, mat + vec ya maneja la transmisión correctamente. También es más rápido que usar np.newaxis . He editado mi respuesta original para aclarar esto.

¿Existe una forma rápida en numpy para agregar un vector a cada fila o columna de una matriz?

Últimamente, he estado agrupando el vector al tamaño de la matriz, que puede usar mucha memoria. Por ejemplo

mat=np.arange(15) mat.shape=(5,3) vec=np.ones(3) mat+=np.tile(vec, (5,1))

La otra forma en que puedo pensar es usando un bucle de python, pero los bucles son lentos:

for i in xrange(len(mat)): mat[i,:]+=vec

¿Hay una forma rápida de hacer esto en cantidad sin tener que recurrir a las extensiones C?

Sería bueno poder virtualmente armar un vector, como una versión más flexible de la transmisión. O para poder iterar una operación por filas o por columnas, lo que casi puede hacer con algunos de los métodos ufunc.