es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Realizando operaciones personalizadas simples con Einsum.

Soy nuevo en Einsum y quería un caso particular: usar einsum para multiplicar todos los elementos de una matriz entre sí; digamos que se tiene una matriz 2D:

py
np.random.rand((16,2))

Multiplicar los elementos a lo largo de un eje obteniendo (16,) y luego multiplicarlos entre sí nuevamente para obtener un escalar con forma (1,). Esto es algo como:

py
[[1, 2], ==> [2, 12] ==> 24
[3, 4]]

Intenté usar cosas como:

py
...("ij->")

Pero eso definitivamente no es lo que quiero, ya que no es una multiplicación.

¿Cómo podemos escribir operaciones tan simples con einsum? ¿Acaso einsum no puede manejar cada operación individual, sino que está optimizado para algunos casos difíciles?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para obtener el producto de todos los elementos de una matriz 2D utilizando einsum, podemos usar la siguiente expresión:

    np.einsum('ij->', matriz)
    

    Aquí, 'ij->' indica que queremos sumar todos los elementos de la matriz, lo que resulta en un valor escalar.

    Para comprender esta expresión, primero debemos analizar la notación einsum. La notación consta de varios componentes:

    • Subíndices: Estas son las letras utilizadas para indicar las dimensiones de las matrices de entrada. En nuestro caso, tenemos una matriz 2D, por lo que usamos las letras 'ij'.
    • Flecha: Esto indica las dimensiones de salida de la matriz. En nuestro caso, queremos una salida escalar, por lo que usamos '->'.
    • Puntos suspensivos: Estos se pueden usar para indicar que queremos sumar sobre múltiples dimensiones. En nuestro caso, queremos sumar sobre todas las dimensiones, por lo que omitimos los puntos suspensivos.

    En resumen, la expresión 'ij->' le indica a einsum que tome el producto de todos los elementos de la matriz de entrada, lo que resulta en una salida escalar.

    einsum es una herramienta muy poderosa para realizar una variedad de operaciones en matrices, incluyendo transposición, suma y multiplicación. Si bien puede que no pueda manejar todas las operaciones, está optimizada para muchos casos difíciles y puede manejar una amplia variedad de aplicaciones.

Comments are closed.