Crear matriz de productos externos en numpy
Tengo una serie de n vectores de longitud m. Por ejemplo, conn = 3, m = 2:
x = array([[1, 2], [3, 4], [5,6]])
Quiero tomar el producto exterior de cada vector consigo mismo, luego concatenarlos en una matriz de matrices cuadradas de forma(n, m, m). Así que para elx
arriba obtendría
array([[[ 1, 2],
[ 2, 4]],
[[ 9, 12],
[12, 16]],
[[25, 30],
[30, 36]]])
Puedo hacer esto con unfor
bucle como tal
np.concatenate([np.outer(v, v) for v in x]).reshape(3, 2, 2)
¿Hay una expresión numpy que hace esto sin el Pythonfor
¿lazo?
Pregunta extra: ya que los productos externos son simétricos, no necesitom x m Operaciones de multiplicación para calcularlas. ¿Puedo obtener esta optimización de simetría de numpy?