Difusión NumPy

Difusion Numpy



Las matrices de diferentes tamaños no se pueden sumar, restar o usar de otra manera en aritmética. Duplicar la matriz de pequeños para darle las mismas dimensiones y tamaño que la matriz más grande es un enfoque. Al realizar aritmética de matriz, NumPy ofrece una característica conocida como transmisión de matriz que puede acortar y simplificar significativamente su código. Aprenderá sobre la idea de la transmisión de matriz y cómo usarla en NumPy en este tutorial. Además, se proporcionan varios programas de ejemplo.

¿Qué es la transmisión NumPy?

Al realizar operaciones aritméticas en matrices de diferentes formas, NumPy se refiere a esto como transmisión. Estas operaciones de matriz se llevan a cabo con frecuencia en los elementos respectivos. Si dos arreglos tienen la misma forma, se puede hacer en ellos con facilidad. Aunque este concepto es útil, no siempre se recomienda la difusión porque puede resultar en un uso ineficiente de la memoria que ralentiza el cálculo. Las operaciones NumPy a menudo se realizan en pares de matrices que se desglosan elemento por elemento.

Reglas de radiodifusión

Se debe seguir un conjunto particular de pautas al transmitir. Estos se describen a continuación:







  1. Es importante anteponer 1 a la forma de matriz de rango inferior hasta que ambas formas de las matrices compartan la misma longitud si dos matrices no tienen el mismo rango.
  2. Se considera que dos matrices son compatibles si tienen el mismo tamaño de dimensión o si uno de ellos tiene el tamaño de dimensión establecido en 1.
  3. Las matrices solo se pueden transmitir juntas si sus tamaños y dimensiones coinciden.
  4. Una vez que se completa la transmisión, cada matriz actúa como si su forma coincidiera con la del elemento más grande en las formas de las dos matrices de entrada.
  5. Una de las matrices se comporta como si estuviera replicada con esa dimensión si la otra matriz tiene una dimensión mayor que 1 y la primera matriz tiene una dimensión de 1.

Ahora, analicemos algunos ejemplos de implementación del concepto de transmisión.



Ejemplo 1:

En pares de arreglos, las operaciones NumPy generalmente se llevan a cabo elemento por elemento. Las dos matrices deben, en el escenario más sencillo, tener la misma forma, como en el siguiente ejemplo:



importar entumecido

uno_arr = entumecido formación ( [ 2.0 , 3.0 , 1.0 ] )

dos_arr = entumecido formación ( [ 3.0 , 3.0 , 3.0 ] )

impresión ( una_arr * dos_arr )





Como puede ver en el código anterior, tenemos dos matrices: 'one_arr' y 'two_ arr'. Cada uno de los cuales tiene un conjunto separado de valores. Los valores en 'one_arr' son [2.0,3.0,1.0] y 'two _arr' son [3.0,3.0,3.0]. Luego puede ver que el resultado de calcular el producto de estas dos matrices es el siguiente:



Cuando los formularios de las matrices cumplen ciertos requisitos, la regla de transmisión de NumPy reduce esta restricción. Cuando una matriz y un valor escalar se unen en una operación, la transmisión se demuestra en su forma más básica. Como puede ver, 3 está contenido en la variable llamada 'two_arr'.

importar entumecido

uno_arr = entumecido formación ( [ 2.0 , 3.0 , 1.0 ] )

dos_arr = 3.0

impresión ( una_arr * dos_arr )

El código anterior produce el siguiente resultado.

En el ejemplo anterior, donde 'two_arr' era una matriz, el resultado es equivalente. Podemos imaginarnos que el escalar 'two_arr' se expande durante el proceso aritmético en una matriz que tiene la misma forma que 'one _arr'. La matriz 'two_arr' contiene nuevos elementos que son simplemente duplicados del primer escalar. La comparación de estiramiento es meramente hipotética. Para hacer que las operaciones de transmisión como memoria y computacionalmente sean factibles, NumPy es lo suficientemente inteligente como para usar el valor escalar original en lugar de producir copias.

Ejemplo 2:

Aquí hay otro programa Python simple que realiza la transmisión. Una vez más, se crean dos matrices que contienen valores diferentes. Es necesario remodelar 'first_arr' en un vector de columna con una forma de 3 × 1 para calcular un producto externo. Después de esto, la transmisión se realiza contra 'segundo_arr' para proporcionar un resultado de tamaño 3 × 2, conocido como el producto externo de 'primer_arr' y 'segundo_arr'. La transmisión a 2 × 3 es posible ya que 'result_arr' tiene la forma 2 ×3 así como la forma (3,).

Después de seguir todos los pasos mencionados anteriormente, se debe incluir un vector en cada columna de las matrices que son 'result_arr' y 'second_arr'. Estas tienen dimensiones de 2×3 y (2, ). La transposición de 'result_arr' producirá una forma de 3 × 2, que luego se puede transmitir contra 'second_arr' para obtener la misma forma. Por lo general, la transposición de esto produce un producto final en forma de 2×3.

importar entumecido

primer_arr = entumecido formación ( [ 12 , 24 , 14 ] )

segundo_arr = entumecido formación ( [ 15 , 22 ] )

impresión ( entumecido remodelar ( primer_arr , ( 3 , 1 ) ) * segundo_arr )

result_arr = entumecido formación ( [ [ 12 , 22 , 31 ] , [ 15 , 22 , 45 ] ] )

impresión ( resultado_arr + primer_arr )

impresión ( ( resultado_arr. T + segundo_arr ) . T )

impresión ( result_arr + numpy. remodelar ( segundo_arr , ( 2 , 1 ) ) )

impresión ( resultado_arr * 2 )

Puede ver la salida a continuación.

Ejemplo 3:

Se puede transmitir una matriz tridimensional utilizando el siguiente programa de Python. En este ejemplo, se generaron dos matrices llamadas 'first_arr' y 'second_arr'. La matriz 'first_arr' contiene valores [4,13,26,12] y 'second_arr' contiene valores [32,67,45,17]. Las 2 dimensiones de la matriz inicial marcan la diferencia. La suma de la primera y la segunda matriz se mostrará a continuación después de que se haya ejecutado el código. Puede ver que tenemos tres declaraciones de impresión en el código, cada una de las cuales muestra el texto 'Primera matriz:', 'Segunda matriz' y 'Tercera matriz:' a su vez. Luego se muestra la suma de estas dos matrices recién generadas.

importar entumecido

primer_arr = entumecido formación ( [ [ 4 , 13 , 26 , 12 ] , [ 32 , 67 , 45 , 17 ] ] )

segundo_arr = entumecido formación ( [ 24 , 45 , 66 , 87 ] )

impresión ( ' \norte Primera matriz: ' )

impresión ( primer_arr )

impresión ( ' \norte Segunda matriz: ' )

impresión ( segundo_arr )

impresión ( ' \norte Suma de la primera y segunda matriz: ' )

suma_resultado = primera_arr + segunda_arr ;

impresión ( suma_resultado )

Aquí está la captura de pantalla de salida del código dado.

Ejemplo 4:

El último programa de Python que transmite una matriz tridimensional se proporciona aquí. En este programa se especifican dos matrices, la primera de las cuales tiene tres dimensiones. La suma de la primera y la segunda matriz se mostrará como se muestra arriba después de que se haya ejecutado el código. Aunque los valores de estas matrices varían, el código restante es el mismo que se usó en el programa de ejemplo anterior.

importar entumecido

primer_arr = entumecido formación ( [ [ 12 , 45 , 22 , 13 ] , [ 22 , 54 , 25 , 12 ] , [ 50 , 40 , 18 , 26 ] ] )

segundo_arr = entumecido formación ( [ 12 , 44 , 22 , 12 ] )

impresión ( ' \norte Primera matriz: ' )

impresión ( primer_arr )

impresión ( ' \norte Segunda matriz: ' )

impresión ( segundo_arr )

impresión ( ' \norte Suma de la primera y segunda matriz: ' )

suma_resultado = primera_arr + segunda_arr ;

impresión ( suma_resultado )

Puede ver en la figura a continuación que se presenta una matriz tridimensional de la primera matriz, seguida de una matriz bidimensional de la segunda matriz y el resultado de estos dos empleando el principio de transmisión.

Conclusión

Este artículo discutió la transmisión, un concepto crucial de Python. En NumPy, el término 'transmisión' se refiere a la capacidad de manejar matrices de varias formas mientras se realizan operaciones aritméticas que se realizan con frecuencia. El tema antes mencionado ha sido cubierto a fondo con una variedad de ejemplos. Este artículo usó los programas de ejemplo mencionados para demostrar cómo transmitir en matrices 1-D, 2-D y 3-D, respectivamente. Puede intentar ejecutar estos ejemplos en su sistema y ver los resultados para comprender mejor cómo funciona todo en general.