Articles

Explicación de la desviación estándar de Numpy

Este tutorial explicará cómo usar la función de desviación estándar de Numpy (también conocida como np.ETS).

En un nivel alto, la función de desviación estándar Numpy es simple. Calcula la desviación estándar de los valores en una matriz Numpy.

Pero los detalles de cómo funciona exactamente la función son un poco complejos y requieren alguna explicación.

Dicho esto, este tutorial explicará cómo usar la función de desviación estándar Numpy.

Explicará la sintaxis de np.std (), y le mostrará ejemplos claros y paso a paso de cómo funciona la función.

El tutorial está organizado en secciones. Puede hacer clic en cualquiera de los siguientes enlaces, que lo llevarán a la sección correspondiente.

Tabla de Contenidos

  • Una muy rápida revisión de Numpy
  • Introducción a Numpy desviación estándar
  • La sintaxis de np.std
  • Ejemplos de desviación estándar de Numpy
  • Preguntas frecuentes de desviación estándar de Numpy

Dicho esto, si eres relativamente nuevo en Numpy, es posible que quieras leer el tutorial completo.

Una revisión rápida de Numpy

Comencemos con una revisión rápida de Numpy.

¿Qué es Numpy?

Numpy es un conjunto de herramientas para trabajar con datos numéricos

En pocas palabras, Numpy es un conjunto de herramientas para trabajar con datos numéricos.

Primero, Numpy tiene un conjunto de herramientas para crear una estructura de datos llamada matriz Numpy.

Puede pensar en una matriz Numpy como una cuadrícula de números de fila y columna. Las matrices Numpy pueden ser de 1, 2 o incluso n dimensiones.

UNA matriz 2D se ve algo como esto:

Un ejemplo de una matriz NumPy de 2 dimensiones con los números del 0 al 7.

Por simplicidad, en este tutorial, nos limitaremos a matrices de 1 o 2 dimensiones.

Hay una variedad de maneras para crear diferentes tipos de matrices con diferentes tipos de números. Algunas otras herramientas para crear matrices Numpy incluyen arreglos numpy, ceros numpy, unos numpy, mosaicos numpy y otros métodos.

Independientemente de cómo cree su matriz Numpy, en un nivel alto, son simplemente matrices de números.

Numpy proporciona herramientas para manipular arrays Numpy

Numpy no solo proporciona herramientas para crear arrays Numpy, Numpy también proporciona herramientas para trabajar con arrays Numpy.

Algunas de las herramientas Numpy más importantes son las funciones Numpy para realizar cálculos.

Hay un conjunto completo de funciones Numpy para hacer cosas como:

  • calcular la suma de un array Numpy
  • calcular el máximo
  • calcular el exponencial de los números en un array
  • calcular el valor x a alguna potencia, para cada valor en un array Numpy

and y una variedad de otros cálculos.

La desviación estándar Numpy es esencialmente muy parecida a estas otras herramientas Numpy. Solo se usa para realizar un cálculo (la desviación estándar) de un grupo de números en una matriz Numpy.

Una introducción rápida a la desviación estándar Numpy

En un nivel muy alto, la desviación estándar es una medida de la propagación de un conjunto de datos. En particular, es una medida de cuán lejos están los puntos de datos de la media de los datos.

Repasemos brevemente el cálculo básico.

la desviación Estándar se calcula como la raíz cuadrada de la varianza.

Así que si tenemos un conjunto de datos con números N, la varianza será:

\begin{ecuación*} \frac{1}{N} \displaystyle\sum_{i=1}^N (x_i - \overline{x})^2 \end{ecuación*}

Y la desviación estándar será sólo la raíz cuadrada de la varianza:

\begin{ecuación*} \sqrt{\frac{1}{N} \displaystyle\sum_{i=1}^N (x_i - \overline{x})^2} \end{ecuación*}

Donde:

x_i = los valores individuales del conjunto de datos
N = el número de valores del conjunto de datos
\overline{x} = la media de los valores x_i

La mayoría de las veces, calcular la desviación estándar a mano es un poco difícil, porque necesita calcular la media, las desviaciones de cada punto de datos de la media, luego el cuadrado de las desviaciones, etc. Francamente, es un poco tedioso.

Sin embargo, si está trabajando en Python, puede usar la función de desviación estándar Numpy para realizar el cálculo por usted.

Una nota rápida si eres nuevo en las estadísticas

Porque esta publicación de blog trata sobre el uso de numpy.función std (), no quiero adentrarme demasiado en las malas hierbas sobre cómo se realiza el cálculo a mano. Este tutorial es realmente sobre cómo usamos la función. Por lo tanto, si necesita una revisión rápida de qué es la desviación estándar, puede ver este video.

Ok. Habiendo revisado rápidamente qué es la desviación estándar, veamos la sintaxis de np.ETS.

La sintaxis de np.std

La sintaxis de la función de desviación estándar Numpy es bastante simple.

Lo explicaré en un segundo, pero primero, quiero decirles una nota rápida sobre la sintaxis Numpy.

Una nota rápida: la sintaxis exacta depende de cómo importe Numpy

Normalmente, cuando escribimos sintaxis Numpy, usamos el alias «np». Esa es la convención común entre la mayoría de los científicos de datos.

Para establecer ese alias, debe importar Numpy de la siguiente manera:

import numpy as np

Si importamos Numpy con este alias, podremos llamar a la función de desviación estándar de Numpy como np.std().

Bien, dicho esto, echemos un vistazo más de cerca a la sintaxis.

np.sintaxis de std

En un nivel alto, la sintaxis de np.std se ve algo como esto:

Una imagen que explica la sintaxis de la desviación estándar Numpy.

Como mencioné anteriormente, asumiendo que hemos importado Numpy con el alias «np» llamamos a la función con la sintaxis np.std().

Luego, dentro del paréntesis, hay varios parámetros que le permiten controlar exactamente cómo funciona la función.

Echemos un vistazo a esos parámetros.

Los parámetros de numpy.std

Hay algunos parámetros importantes que debe conocer:

  • a
  • axis
  • dtype
  • ddof
  • keepdims
  • out

echemos un vistazo a cada uno de ellos.

a (obligatorio)

El parámetro a especifica la matriz de valores sobre la que desea calcular la desviación estándar.

Dicho de otra manera, esto le permite especificar la matriz de entrada de la función.

Las entradas apropiadas incluyen matrices Numpy, pero también objetos «tipo matriz», como listas de Python.

Es importante destacar que debe proporcionar una entrada a este parámetro. Se requiere una entrada.

Dicho esto, el parámetro en sí puede ser implícito o explícito. Lo que quiero decir con eso, es que puede escribir directamente el parámetro a=, O puede dejar el parámetro fuera de su sintaxis, y simplemente escriba el nombre de su matriz de entrada.

Le mostraré ejemplos de esto en el ejemplo 1.

axis

El parámetro axis le permite especificar un eje a lo largo del cual se calculará la desviación estándar.

Para entender esto, realmente necesitas entender los ejes.

Los arrays Numpy tienen ejes.

Puede pensar en un » eje » como una dirección a lo largo de la matriz.

En una matriz de 2 dimensiones, habrá 2 ejes: eje-0 y eje-1.

En una matriz 2D, el eje-0 apunta hacia abajo a lo largo de las filas y el eje-1 apunta horizontalmente a lo largo de las columnas.

Visualmente, puede visualizar los ejes de una matriz 2D como esta:

Un ejemplo visual de ejes de matriz NumPy.

Usando el parámetro axis, puede calcular la desviación estándar en una dirección particular a lo largo de la matriz.

Esto se ilustra mejor con ejemplos, así que te mostraré un ejemplo en el ejemplo 2.

(Para obtener una explicación completa de los ejes de matriz Numpy, consulte nuestro tutorial titulado Explicación de ejes Numpy.)

dtype

(opcional)
dtype parámetro permite especificar el tipo de datos que desea utilizar cuando np.std calcula la desviación estándar.

Si los datos en la matriz de entrada son enteros, entonces esto será por defecto float64.

De lo contrario, si los datos en la matriz de entrada son flotantes, entonces esto tendrá por defecto el mismo tipo flotante que la matriz de entrada.

ddof

(opcional)
Esto le permite especificar los «grados de libertad» para el cálculo.

Para entender esto, necesita mirar la ecuación 2 de nuevo.

\

En esta ecuación, el primer término es \frac{1}{N}.

Recuerde: N es el número de valores en la matriz o conjunto de datos.

Pero si pensamos en términos estadísticos, en realidad hay una diferencia entre calcular una desviación estándar de la población vs una desviación estándar de la muestra.

Si calculamos una desviación estándar de la población, usamos el término \frac{1}{N} en nuestra ecuación.

Sin embargo, cuando calculamos la desviación estándar en una muestra de datos (una muestra de n puntos de datos), entonces necesitamos modificar la ecuación para que el término principal sea \frac{1}{n - 1}. En ese caso, la ecuación para una desviación estándar de muestra se convierte en:

\begin{ecuación*} s_{muestra} = \sqrt{\frac{1}{n - 1} \displaystyle\sum_{i=1}^N (x_i - \overline{x})^2} \end{ecuación*}

Cómo implementamos esto con np.std?

Podemos hacer esto con el parámetro ddof, configurando ddof = 1.

Y de hecho, podemos establecer el término ddof de manera más general. Cuando usamos ddof, modificará el cálculo de la desviación estándar para convertirse en:

\begin{ecuación*} \sqrt{\frac{1}{n - ddof} \displaystyle\sum_{i=1}^N (x_i - \overline{x})^2} \end{ecuación*}

Para ser honesto, esto es un poco técnico. Si necesita aprender más sobre esto, debe ver este video en Khan Academy sobre los grados de libertad y la desviación estándar de la población frente a la muestra.

out

(opcional)
out parámetro permite especificar una alternativa matriz en la que poner la salida.

Debe tener la misma forma que la salida esperada.

keepdims

(opcional)
keepdims parámetro puede ser utilizado para «mantener» el número original de dimensiones. Cuando se establece keepdims = True, la salida tendrá el mismo número de dimensiones que la entrada.

Recuerde: cuando calculamos la desviación estándar, el cálculo «colapso» el número de dimensiones.

Por ejemplo, si ingresamos una matriz de 2 dimensiones como entrada, por defecto, np.std emitirá un número. Un valor escalar.

Pero si queremos que la salida sea un número dentro de una matriz 2D (es decir, una matriz de salida con las mismas dimensiones que la entrada), podemos establecer keepdims = True.

Para ser honesto, algunos de estos parámetros son un poco abstractos, y creo que tendrán mucho más sentido con ejemplos.

echemos un vistazo a algunos ejemplos.

Ejemplos de cómo usar la desviación estándar Numpy

Aquí, veremos algunos ejemplos. Empezaremos simple y luego aumentaremos la complejidad.

Ejemplos:

  • Calcular la desviación estándar de una matriz de 1 dimensión
  • Calcular la desviación estándar de una matriz de 2 dimensiones
  • Utilizar np.std para calcular las desviaciones estándar de las columnas
  • Use np.std para calcular las desviaciones estándar de las filas
  • Cambie los grados de libertad
  • Use el parámetro keepdims en np.std

Ejecute este código primero

Antes de ejecutar cualquiera de los códigos de ejemplo, debe importar Numpy.

Para hacer esto, puede ejecutar el siguiente código:

import numpy as np

Esto importará Numpy con el alias «np«.

EJEMPLO 1: Calcule la desviación estándar de una matriz de 1 dimensión

Aquí, comenzaremos con simple.

vamos a calcular la desviación estándar de 1-dimensional Numpy matriz.

Crear matriz 1D

Primero, crearemos nuestra matriz 1D:

array_1d = np.array()
Calcular el desarrollo estándar

Ahora, calcularemos la desviación estándar de esos números.

np.std(array_1d)

FUERA:

30.84369195367723

Entonces, ¿qué pasó aquí?

El np.la función std acaba de calcular la desviación estándar de los números utilizando la ecuación 2 que vimos anteriormente. Cada número es uno de los x_i en esa ecuación.

Una nota rápida

En el ejemplo anterior, no usamos explícitamente el parámetro a=. Eso es porque np.std entiende que cuando proporcionamos un argumento a la función como en el código np.std(array_1d), la entrada debe pasarse al parámetro a.

Alternativamente, también puede usar explícitamente el parámetro a=:

np.std(a = array_1d)

OUT:

30.84369195367723

EJEMPLO 2: Calcule la desviación estándar de un array de 2 dimensiones

Ok. Ahora, veamos un ejemplo con una matriz de 2 dimensiones.

Crear matriz de 2 dimensiones

Aquí, vamos a crear una matriz 2D, utilizando el np.aleatorio.función randint.

np.random.seed(22)array_2d = np.random.randint(20, size =(3, 4))

Esta matriz tiene 3 filas y 4 columnas.

Imprimámoslo, para que podamos verlo.

print(array_2d)

OUT:

 ]

Esto es solo un array 2D que contiene 12 enteros aleatorios entre 0 y 20.

Calcule la desviación estándar con np.std

Bien, calculemos la desviación estándar.

np.std(array_2d)

OUT:

5.007633062524539

Aquí, numpy.std() es simplemente calcular la desviación estándar de los 12 enteros.

La desviación estándar es 5.007633062524539.

EJEMPLO 3: Calcular la desviación estándar de las columnas

Ahora, vamos a calcular la desviación estándar de las columnas.

Para hacer esto, necesitamos usar el parámetro axis. (Aprendió sobre el parámetro axis en la sección sobre los parámetros de numpy.std)

Específicamente, necesitamos establecer axis = 0.

¿por Qué?

Como mencioné anteriormente en la explicación del parámetro axis, los arrays Numpy tienen ejes.

En una matriz bidimensional, axis-0 es el eje que apunta hacia abajo.

Una matriz NumPy que muestra que axis = 0 es el eje que se encuentra en las filas de la matriz.

Cuando usamos numpy.std con axis = 0, que calculará las desviaciones estándar hacia abajo en la dirección del eje-0.

Echemos un vistazo a un ejemplo para que puedas ver lo que quiero decir.

Crear matriz de 2 dimensiones

Primero, crearemos una matriz 2D, utilizando el np.aleatorio.función randint.

(Esta es la misma matriz que creamos en el ejemplo 2, por lo que si ya la creó, no debería tener que crearla de nuevo.)

np.random.seed(22)array_2d = np.random.randint(20, size =(3, 4))

Vamos a imprimirlo, por lo que podemos ver.

print(array_2d)

OUT:

 ]

Esto es solo una matriz 2D que contiene enteros entre 0 y 20.

Use np.std para calcular la desviación estándar de las columnas

Ahora, estableceremos axis = 0 dentro de np.std para calcular las desviaciones estándar de las columnas.

np.std(array_2d, axis = 0)

FUERA:

array()
Explicación

¿Qué está pasando aquí?

Cuando usamos np.std con axis = 0, Numpy calculará la desviación estándar hacia abajo en la dirección del eje-0. Recuerde, como mencioné anteriormente, el eje-0 apunta hacia abajo.

Esto tiene el efecto de calcular la desviación estándar de cada columna de la matriz Numpy.

Una imagen que muestra cómo usar la desviación estándar Numpy con axis = 0 para calcular las desviaciones estándar de columna.

Ahora, hagamos un ejemplo similar con las desviaciones estándar de la fila.

EJEMPLO 4: Usar np.std para calcular las desviaciones estándar de las filas

Ahora, vamos a usar np.std para calcular las desviaciones estándar horizontalmente a lo largo de una matriz numpy 2D.

Recuerda lo que dije antes: los arrays numpy tienen ejes. Los ejes son como direcciones a lo largo de la matriz Numpy. En una matriz 2D, el eje-1 apunta horizontalmente, como este:

Una imagen que muestra cómo el eje-1 apunta horizontalmente a lo largo de una matriz Numpy 2D.

Por lo tanto, si queremos calcular las desviaciones estándar horizontalmente, podemos establecer axis = 1. Esto tiene el efecto de calcular las desviaciones estándar de la fila.

Echemos un vistazo.

Crear matriz de 2 dimensiones

Para ejecutar este ejemplo, necesitaremos de nuevo una matriz Numpy 2D, por lo que crearemos una matriz 2D usando el np.aleatorio.función randint.

(Esta es la misma matriz que creamos en el ejemplo 2, por lo que si ya la creó, no debería tener que crearla de nuevo.)

np.random.seed(22)array_2d = np.random.randint(20, size =(3, 4))

Vamos a imprimirlo, por lo que podemos ver.

print(array_2d)

OUT:

 ]

Esto es solo una matriz 2D que contiene enteros entre 0 y 20.

Use np.std para calcular la desviación estándar de las filas

Ahora, usaremos np.std con axis = 1 para calcular las desviaciones estándar de las filas.

np.std(array_2d, axis = 1)

OUT:

array()
Explicación

Si ha entendido el ejemplo 3, este nuevo ejemplo debería tener sentido.

Cuando usamos np.std y set axis = 1, Numpy calculará las desviaciones estándar horizontalmente a lo largo del eje-1.

Una imagen que se muestra usando np.std con eje = 1 para calcular las desviaciones estándar de la fila.

Efectivamente, cuando usamos la desviación estándar Numpy con axis = 1 , la función calcula la desviación estándar de las filas.

EJEMPLO 5: Cambiar los grados de libertad

Ahora, cambiemos los grados de libertad.

Aquí en este ejemplo, vamos a crear una gran matriz de números, tomar una muestra de esa matriz y calcular la desviación estándar en esa muestra.

Primero, vamos a crear nuestros arrays.

Crear matriz Numpy

Primero, crearemos una matriz Numpy distribuida normalmente con una media de 0 y una desviación estándar de 10.

Para hacer esto, usaremos la función normal aleatoria Numpy. Tenga en cuenta que estamos utilizando la función semilla aleatoria Numpy para establecer la semilla para el generador de números aleatorios. Para obtener más información sobre esto, lea nuestro tutorial sobre np.aleatorio.semilla.

np.random.seed(22)population_array = np.random.normal(size = 100, loc = 0, scale = 10)

Ok. Ahora tenemos una matriz Numpy, population_array, que tiene 100 elementos que tienen una media de 0 y una desviación estándar de 10.

Crear muestra

Ahora, usaremos Numpy random choice para tomar una muestra aleatoria de la matriz Numpy, population_array.

np.random.seed(22)sample_array = np.random.choice(population_array, size = 10)

Esta nueva matriz, sample_array, es una muestra aleatoria de 10 elementos de population_array.

Usaremos sample_array cuando calculemos nuestra desviación estándar utilizando el parámetro ddof.

Calcule la desviación estándar de la muestra

Ahora, calcularemos la desviación estándar de la muestra.

Específicamente, vamos a usar la función de desviación estándar Numpy con el parámetroddof establecido en ddof = 1.

np.std(sample_array, ddof = 1)

FUERA:

10.703405562234051
Explicación

Aquí, hemos calculado:

\

Y cuando nos set ddof = 1, la ecuación se evalúa para:

\

Para ser claros, al calcular la desviación estándar de una muestra, establecerá ddof = 1.

Para ser honesto, los detalles sobre por qué son un poco técnicos (y más allá del alcance de este artículo), por lo que para obtener más información sobre el cálculo de una desviación estándar de muestra, te recomiendo que veas este video.

Tenga en cuenta que para algunas otras instancias, puede establecer ddof a otros valores además de 1 o 0. Si no utiliza el parámetro ddof, el valor predeterminado será 0.

No importa el valor que seleccione, la función de desviación estándar Numpy calculará la desviación estándar con la ecuación:

\

EJEMPLO 6: Use el parámetro keepdims en np.std

Ok. Finalmente, haremos un último ejemplo.

Aquí, vamos a establecer el keepdims parámetro keepdims = True.

Crear matriz de 2 dimensiones

Primero, crearemos una matriz 2D, utilizando el np.aleatorio.función randint.

(Esta es la misma matriz que creamos en el ejemplo 2, por lo que si ya la creó, no debería tener que crearla de nuevo.)

np.random.seed(22)array_2d = np.random.randint(20, size =(3, 4))

Vamos a imprimir:

print(array_2d)

FUERA:

 ]
Verificación de las dimensiones

Ahora, echemos un vistazo a las dimensiones de esta matriz.

array_2d.ndim

OUT:

2

Este es un array 2D, como pretendíamos.

Calcule la desviación estándar y compruebe las dimensiones

Ok. Ahora, vamos a calcular la desviación estándar y comprobar las dimensiones de la salida.

output = np.std(array_2d)

Vamos a imprimir rápidamente la salida:

print(output)

FUERA:

5.007633062524539

de Modo que la desviación estándar es 5.007633062524539.

Ahora, ¿cuáles son las dimensiones de la salida?

output.ndim

OUT:

0

La salida tiene 0 dimensiones (es un valor escalar).

¿por Qué?

Cuando np.std calcula la desviación estándar, está calculando una estadística de resumen. En este caso, la función toma un gran número de valores y los contrae en una sola métrica.

Así que la entrada era de 2 dimensiones, pero la salida es de 0 dimensiones.

¿Y si queremos cambiar eso?

¿Y si queremos que la salida tenga técnicamente 2 dimensiones?

Podemos hacerlo con el parámetro keepdims.

Mantenga las dimensiones originales cuando usamos np.std

Aquí, estableceremos keepdims = True para que la salida tenga las mismas dimensiones que la entrada.

output_2d = np.std(array_2d, keepdims = True)

Ahora, echemos un vistazo a la salida:

print(output_2d)

FUERA:

]

Observe que el resultado, la desviación estándar, es todavía 5.00763306. Pero el resultado está encerrado dentro de soportes dobles.

Inspeccionemos output_2d y echemos un vistazo más de cerca.

type(output_2d)

OUT:

numpy.ndarray

So, output_2d es un array Numpy, no un valor escalar.

Vamos a comprobar las dimensiones:

output_2d.ndim

FUERA:

2

Este Numpy matriz, output_2d, tiene 2 dimensiones.

Este es el mismo número de dimensiones que la entrada.

¿Qué pasó?

Cuando configuramos keepdims = True, eso causó el np.función std para producir una salida con el mismo número de dimensiones que la entrada. Aunque no hay filas y columnas en la salida, la salida output_2d tiene 2 dimensiones.

Por lo tanto, en caso de que alguna vez necesite que su salida tenga el mismo número de dimensiones que su entrada, puede establecer keepdims = True.

(Esto también funciona cuando usas el parámetroaxis try pruébalo!)

Preguntas frecuentes sobre la desviación estándar de Numpy

Ahora que ha aprendido sobre la desviación estándar de Numpy y ha visto algunos ejemplos, repasemos algunas preguntas frecuentes sobre np.ETS.

Preguntas frecuentes:

  • ¿Por qué numpy std() da un resultado diferente al de matlab std () u otro lenguaje de programación?

Pregunta 1: ¿Por qué numpy std() da un resultado diferente que matlab std() u otro lenguaje de programación?

La sencilla razón es que matlab calcula el desarrollo estándar de acuerdo con lo siguiente:

\

(Muchas otras herramientas utilizan la misma ecuación.)

sin Embargo, Numpy calcula con la siguiente:

\

Observe la diferencia sutil entre el \frac{1}{n - 1} vs \frac{1}{N}.

Para solucionar esto, puede usar el parámetro ddof en Numpy.

Si utiliza np.std con el parámetro ddof establecido en ddof = 1, debería obtener la misma respuesta que matlab.

Deje sus otras preguntas en los comentarios a continuación

¿Tiene otras preguntas sobre la función de desviación estándar Numpy?

Deje su pregunta en la sección de comentarios a continuación.

Únase a nuestro curso para obtener más información sobre Numpy

Los ejemplos que ha visto en este tutorial deberían ser suficientes para comenzar, pero si se toma en serio el aprendizaje de Numpy, debe inscribirse en nuestro curso premium llamado Maestría de Numpy.

Hay mucho más que aprender sobre Numpy, y Numpy Mastery te enseñará todo, incluyendo:

  • Cómo crear matrices Numpy
  • Cómo usar las funciones aleatorias Numpy
  • Qué hace la función «Semilla aleatoria Numpy»
  • Cómo remodelar, dividir y combinar sus matrices Numpy
  • y más

Además, le ayudará a dominar completamente la sintaxis en unas pocas semanas. Descubrirás cómo llegar a ser «fluido» al escribir código Numpy.

Obtenga más información aquí:

Obtenga más información sobre Numpy Mastery