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
- Numpy es un conjunto de herramientas para trabajar con datos numéricos
- Numpy proporciona herramientas para manipular arrays Numpy
- Una introducción rápida a la desviación estándar Numpy
- Una nota rápida si eres nuevo en las estadísticas
- La sintaxis de np.std
- Una nota rápida: la sintaxis exacta depende de cómo importe Numpy
- np.sintaxis de std
- Los parámetros de numpy.std
- a (obligatorio)
- axis
- dtype
- ddof
- out
- keepdims
- Ejemplos de cómo usar la desviación estándar Numpy
- Ejecute este código primero
- EJEMPLO 1: Calcule la desviación estándar de una matriz de 1 dimensión
- Crear matriz 1D
- Calcular el desarrollo estándar
- Una nota rápida
- EJEMPLO 2: Calcule la desviación estándar de un array de 2 dimensiones
- Crear matriz de 2 dimensiones
- Calcule la desviación estándar con np.std
- EJEMPLO 3: Calcular la desviación estándar de las columnas
- Crear matriz de 2 dimensiones
- Use np.std para calcular la desviación estándar de las columnas
- Explicación
- EJEMPLO 4: Usar np.std para calcular las desviaciones estándar de las filas
- Crear matriz de 2 dimensiones
- Use np.std para calcular la desviación estándar de las filas
- Explicación
- EJEMPLO 5: Cambiar los grados de libertad
- Crear matriz Numpy
- Crear muestra
- Calcule la desviación estándar de la muestra
- Explicación
- EJEMPLO 6: Use el parámetro keepdims en np.std
- Crear matriz de 2 dimensiones
- Verificación de las dimensiones
- Calcule la desviación estándar y compruebe las dimensiones
- Mantenga las dimensiones originales cuando usamos np.std
- Preguntas frecuentes sobre la desviación estándar de Numpy
- Pregunta 1: ¿Por qué numpy std() da un resultado diferente que matlab std() u otro lenguaje de programación?
- Deje sus otras preguntas en los comentarios a continuación
- Únase a nuestro curso para obtener más información sobre Numpy
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:
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 , la varianza será:
Y la desviación estándar será sólo la raíz cuadrada de la varianza:
Donde:
= los valores individuales del conjunto de datos
= el número de valores del conjunto de datos
= la media de los valores
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:
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:
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 .
Recuerde: 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 en nuestra ecuación.
Sin embargo, cuando calculamos la desviación estándar en una muestra de datos (una muestra de puntos de datos), entonces necesitamos modificar la ecuación para que el término principal sea . En ese caso, la ecuación para una desviación estándar de muestra se convierte en:
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:
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 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.
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.
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:
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.
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 vs .
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