Digamos que tengo una matriz a de forma (3, 3, 3) y un vector b de tamaño 3. Quiero iterar en el segundo eje de la primera matriz y multiplicar la primera matriz por el primer término de b , el segunda matriz por el segundo término de b , etc.
En python simplemente escribiría algo como
a = np.ones([3, 3, 3]) b = np.array([1, 2, 3]) for i in range(3): a[:, i, :] *= b[i](Incluso podría usar funciones vectorizadas para hacer esto).
Estoy luchando por hacerlo de manera limpia en js, ya que no quiero hacer un bucle en cada eje (tengo matrices con 6 ejes, sería muy poco eficiente.
Actualmente uso NumJs, y lo hago de esta manera:
var a = nj.ones([3, 3, 3]); let b = [1, 2, 3]; for (let i = 0; i < 3; i++) { for (let j = 0; j < 3; j++) { a.slice([i, i+1], [j, j+1]).multiply(b[j], false) } }Tengo que hacer un bucle en 2 ejes y no parece muy eficiente.
¿Hay mejores formas de hacer este tipo de operaciones en js? (También me gustaría hacer otras operaciones como sumar una matriz solo en algunos ejes) ¡Gracias!