Ciencia de los datos

Tutorial de Python NumPy

Tutorial de Python NumPy
En esta lección sobre la biblioteca Python NumPy, veremos cómo esta biblioteca nos permite administrar poderosos objetos de matriz N-dimensionales con funciones sofisticadas presentes para manipular y operar sobre estas matrices. Para completar esta lección, cubriremos las siguientes secciones:

¿Qué es el paquete Python NumPy??

En pocas palabras, NumPy significa 'Python numérico' y eso es lo que pretende cumplir, permitir operaciones numéricas complejas realizadas en objetos de matriz N-dimensional de manera muy fácil e intuitiva. Es la biblioteca principal utilizada en computación científica, con funciones presentes para realizar operaciones algebraicas lineales y operaciones estadísticas.

Uno de los conceptos más fundamentales (y atractivos) de NumPy es su uso de objetos de matriz N-dimensionales. Podemos tomar esta matriz como solo una colección de filas y columnas, como un archivo de MS-Excel. Es posible convertir una lista de Python en una matriz NumPy y operar funciones sobre ella.

Representación de NumPy Array

Solo una nota antes de comenzar, usamos un entorno virtual para esta lección que hicimos con el siguiente comando:

Python -m virtualenv numpy
fuente numpy / bin / activar

Una vez que el entorno virtual está activo, podemos instalar la biblioteca numpy dentro del entorno virtual para que se puedan ejecutar los ejemplos que creamos a continuación:

pip instalar numpy

Vemos algo como esto cuando ejecutamos el comando anterior:

Probemos rápidamente si el paquete NumPy se ha instalado correctamente con el siguiente fragmento de código corto:

importar numpy como np
a = np.matriz ([1,2,3])
imprimir (a)

Una vez que ejecute el programa anterior, debería ver el siguiente resultado:

También podemos tener matrices multidimensionales con NumPy:

multi_dimension = np.matriz ([(1, 2, 3), (4, 5, 6)])
imprimir (multi_dimensión)

Esto producirá una salida como:

[[1 2 3]
[4 5 6]]

También puede usar Anaconda para ejecutar estos ejemplos, lo cual es más fácil y eso es lo que hemos usado anteriormente. Si desea instalarlo en su máquina, consulte la lección que describe “Cómo instalar Anaconda Python en Ubuntu 18.04 LTS ”y comparta sus comentarios. Ahora, avancemos a varios tipos de operaciones que se pueden realizar con las matrices Python NumPy.

Usando matrices NumPy sobre listas de Python

Es importante preguntar que cuando Python ya tiene una estructura de datos sofisticada para contener varios elementos, ¿por qué necesitamos matrices NumPy?? Las matrices NumPy son preferido sobre las listas de Python debido a las siguientes razones:

Nos deja probar que las matrices NumPy ocupan menos memoria. Esto se puede hacer escribiendo un programa Python muy simple:

importar numpy como np
tiempo de importación
importar sys
python_list = rango (500)
imprimir (sys.getsizeof (1) * len (python_list))
numpy_arr = np.naranja (500)
imprimir (numpy_arr.tamaño * numpy_arr.tamaño del artículo)

Cuando ejecutamos el programa anterior, obtendremos el siguiente resultado:

14000
4000

Esto muestra que la lista del mismo tamaño es más de 3 veces en tamaño en comparación con la matriz NumPy del mismo tamaño.

Realización de operaciones NumPy

En esta sección, veamos rápidamente las operaciones que se pueden realizar en matrices NumPy.

Encontrar dimensiones en matriz

Como la matriz NumPy se puede usar en cualquier espacio dimensional para contener datos, podemos encontrar la dimensión de una matriz con el siguiente fragmento de código:

importar numpy como np
numpy_arr = np.matriz ([(1,2,3), (4,5,6)])
imprimir (numpy_arr.ndim)

Veremos la salida como "2" ya que se trata de una matriz bidimensional.

Encontrar el tipo de datos de los elementos en una matriz

Podemos usar la matriz NumPy para contener cualquier tipo de datos. Averigüemos ahora el tipo de datos de los datos que contiene una matriz:

other_arr = np.matriz ([('asombro', 'b', 'gato')])
imprimir (other_arr.dtype)
numpy_arr = np.matriz ([(1,2,3), (4,5,6)])
imprimir (numpy_arr.dtype)

Usamos diferentes tipos de elementos en el fragmento de código anterior. Aquí está la salida que mostrará este script:

int64

Esto sucede cuando los caracteres se interpretan como caracteres Unicode y el segundo es obvio.

Cambiar la forma de los elementos de una matriz

Si una matriz NumPy consta de 2 filas y 4 columnas, se puede remodelar para que contenga 4 filas y 2 columnas. Escribamos un fragmento de código simple para el mismo:

original = np.matriz ([('1', 'b', 'c', '4'), ('5', 'f', 'g', '8')])
imprimir (original)
remodelado = original.remodelar (4, 2)
imprimir (reformado)

Una vez que ejecutemos el fragmento de código anterior, obtendremos el siguiente resultado con ambas matrices impresas en la pantalla:

[['1' 'b' 'c' '4']
['5' 'f' 'g' '8']]
[['1' 'b']
['c' '4']
['5' 'f']
['g' '8']]

Tenga en cuenta cómo NumPy se encargó de cambiar y asociar los elementos a nuevas filas.

Operaciones matemáticas sobre elementos de una matriz

Realizar operaciones matemáticas en elementos de una matriz es muy simple. Comenzaremos escribiendo un fragmento de código simple para averiguar el máximo, el mínimo y la suma de todos los elementos de la matriz. Aquí está el fragmento de código:

numpy_arr = np.matriz ([(1, 2, 3, 4, 5)])
imprimir (numpy_arr.max ())
imprimir (numpy_arr.min ())
imprimir (numpy_arr.suma())
imprimir (numpy_arr.significar())
imprimir (np.sqrt (numpy_arr))
imprimir (np.std (numpy_arr))

En las últimas 2 operaciones anteriores, también calculamos la raíz cuadrada y la desviación estándar de cada elemento de la matriz. El fragmento anterior proporcionará el siguiente resultado:

5
1
15
3.0
[[1.   1.41421356 1.73205081 2.   2.23606798]]
1.4142135623730951

Conversión de listas de Python en matrices NumPy

Incluso si ha estado usando listas de Python en sus programas existentes y no desea cambiar todo ese código pero aún desea hacer uso de matrices NumPy en su nuevo código, es bueno saber que podemos convertir fácilmente un Python lista a una matriz NumPy. Aquí hay un ejemplo:

# Crea 2 nuevas listas de altura y peso
altura = [2.37, 2.87, 1.52, 1.51, 1.70, 2.05]
peso = [91.65, 97.52, 68.25, 88.98, 86.18, 88.45]
# Crea 2 matrices numpy a partir de altura y peso
np_height = np.matriz (altura)
np_weight = np.matriz (peso)

Solo para comprobarlo, ahora podemos imprimir el tipo de una de las variables:

imprimir (tipo (np_height))

Y esto mostrará:

Ahora podemos realizar operaciones matemáticas sobre todos los elementos a la vez. Veamos cómo podemos calcular el IMC de las personas:

# Calcular bmi
bmi = np_weight / np_height ** 2
# Imprime el resultado
imprimir (bmi)

Esto mostrará el IMC de todas las personas calculado por elementos:

[dieciséis.31682957 11.8394056 29.54033934 39.02460418 29.8200692 21.04699584]

¿No es tan fácil y práctico?? Incluso podemos filtrar datos fácilmente con una condición en lugar de un índice entre corchetes:

bmi [bmi> 25]

Esto le dará:

matriz ([29.54033934, 39.02460418, 29.8200692])

Crea secuencias y repeticiones aleatorias con NumPy

Con muchas características presentes en NumPy para crear datos aleatorios y organizarlos en la forma requerida, las matrices NumPy se utilizan muchas veces para generar conjuntos de datos de prueba en muchos lugares, incluidos los fines de depuración y prueba. Por ejemplo, si desea crear una matriz de 0 an, podemos usar el rango (observe la 'r' única) como el fragmento dado:

imprimir (np.arange (5))

Esto devolverá la salida como:

[0 1 2 3 4]

La misma función se puede utilizar para proporcionar un valor más bajo de modo que la matriz comience con otros números distintos de 0:

imprimir (np.arange (4, 12))

Esto devolverá la salida como:

[4 5 6 7 8 9 10 11]

No es necesario que los números sean continuos, pueden omitir un paso de corrección como:

imprimir (np.arange (4, 14, 2))

Esto devolverá la salida como:

[4 6 8 10 12]

También podemos obtener los números en orden decreciente con un valor de omisión negativo:

imprimir (np.arange (14, 4, -1))

Esto devolverá la salida como:

[14 13 12 11 10 9 8 7 6 5]

Es posible financiar n números entre xey con el mismo espacio con el método linspace, aquí está el fragmento de código para el mismo:

notario público.linspace (inicio = 10, parada = 70, num = 10, dtype = int)

Esto devolverá la salida como:

matriz ([10, 16, 23, 30, 36, 43, 50, 56, 63, 70])

Tenga en cuenta que los elementos de salida no están igualmente espaciados. NumPy hace todo lo posible para hacerlo, pero no necesita confiar en él, ya que hace el redondeo.

Finalmente, veamos cómo podemos generar un conjunto de secuencia aleatoria con NumPy, que es una de las funciones más utilizadas para propósitos de prueba. Pasaremos un rango de números a NumPy que se utilizará como punto inicial y final para los números aleatorios:

imprimir (np.aleatorio.randint (0, 10, tamaño = [2,2]))

El fragmento anterior crea una matriz NumPy de 2 por 2 dimensiones que contendrá números aleatorios entre 0 y 10. Aquí está la salida de muestra:

[[0 4]
[8 3]]

Tenga en cuenta que como los números son aleatorios, la salida puede diferir incluso entre las 2 ejecuciones en la misma máquina.

Conclusión

En esta lección, analizamos varios aspectos de esta biblioteca de computación que podemos usar con Python para calcular problemas matemáticos simples y complejos que pueden surgir en varios casos de uso. NumPy es una de las bibliotecas de computación más importantes cuando se trata de ingeniería de datos y cálculo de datos numéricos, definitivamente una habilidad que debemos tener en nuestro haber.

Comparta sus comentarios sobre la lección en Twitter con @sbmaggarwal y @LinuxHint.

OpenTTD frente a Simutrans
Crear su propia simulación de transporte puede ser divertido, relajante y extremadamente atractivo. Es por eso que debes asegurarte de probar tantos j...
Tutorial de OpenTTD
OpenTTD es uno de los juegos de simulación empresarial más populares que existen. En este juego, necesitas crear un maravilloso negocio de transporte....
SuperTuxKart para Linux
SuperTuxKart es un gran título diseñado para ofrecerte la experiencia Mario Kart de forma gratuita en tu sistema Linux. Es bastante desafiante y diver...