NumPy WWW School
NumPy WWW School
NumPy WWW School
Ejemplo
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr)
print(type(arr))
Inténtalo tú mismo "
type (): esta función incorporada de Python nos dice el tipo de objeto que se le
pasa. Como en el código anterior, muestra que arres numpy.ndarraytipo.
Para crear un ndarray, podemos pasar una lista, tupla o cualquier objeto similar a una
matriz en el array() método, y se convertirá en un ndarray:
Ejemplo
Use una tupla para crear una matriz NumPy:
import numpy as np
arr = np.array((1, 2, 3, 4, 5))
print(arr)
Inténtalo tú mismo "
Dimensiones en matrices
Una dimensión en matrices es un nivel de profundidad de matriz (matrices anidadas).
Matrices 0-D
Las matrices 0-D, o escalares, son los elementos de una matriz. Cada valor de una matriz
es una matriz 0-D.
Ejemplo
Crea una matriz 0-D con valor 42
import numpy as np
arr = np.array(42)
print(arr)
Inténtalo tú mismo "
Matrices 1-D
Una matriz que tiene matrices 0-D como sus elementos se denomina matriz
unidimensional o 1-D.
Ejemplo
Cree una matriz 1-D que contenga los valores 1,2,3,4,5:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr)
Inténtalo tú mismo "
Matrices 2-D
Una matriz que tiene matrices 1-D como sus elementos se denomina matriz 2-D.
Ejemplo
Cree una matriz 2-D que contenga dos matrices con los valores 1,2,3 y 4,5,6:
import numpy as np
print(arr)
Inténtalo tú mismo "
Matrices 3-D
Una matriz que tiene matrices 2-D (matrices) como sus elementos se llama matriz 3-D.
Ejemplo
Cree una matriz 3-D con dos matrices 2-D, ambas conteniendo dos matrices con los
valores 1,2,3 y 4,5,6:
import numpy as np
print(arr)
Inténtalo tú mismo "
Ejemplo
Compruebe cuántas dimensiones tienen las matrices:
import numpy as np
a = np.array(42)
b = np.array([1, 2, 3, 4, 5])
c = np.array([[1, 2, 3], [4, 5, 6]])
d = np.array([[[1, 2, 3], [4, 5, 6]], [[1, 2, 3], [4, 5, 6]]])
print(a.ndim)
print(b.ndim)
print(c.ndim)
print(d.ndim)
Inténtalo tú mismo "
Ejemplo
Cree una matriz con 5 dimensiones y verifique que tenga 5 dimensiones:
import numpy as np
print(arr)
print('number of dimensions :', arr.ndim)
Inténtalo tú mismo "
En esta matriz, la dimensión más interna (5th dim) tiene 4 elementos, la cuarta dim tiene
1 elemento que es el vector, la tercera dim tiene 1 elemento que es la matriz con el
vector, la 2nd dim tiene 1 elemento que es una matriz 3D y 1st dim tiene 1 elemento que
es una matriz 4D.
Los índices en las matrices NumPy comienzan con 0, lo que significa que el primer
elemento tiene índice 0 y el segundo tiene índice 1, etc.
Ejemplo
Obtenga el primer elemento de la siguiente matriz:
import numpy as np
arr = np.array([1, 2, 3, 4])
print(arr[0])
import numpy as np
arr = np.array([1, 2, 3, 4])
print(arr[1])
Ejemplo
Obtenga el tercer y cuarto elementos de la siguiente matriz y agréguelos.
import numpy as np
arr = np.array([1, 2, 3, 4])
print(arr[2] + arr[3])
Ejemplo
Acceda al 2do elemento en el 1er dim:
import numpy as np
Ejemplo
Acceda al quinto elemento en el segundo dim:
import numpy as np
Ejemplo
Acceda al tercer elemento de la segunda matriz de la primera matriz:
import numpy as np
print(arr[0, 1, 2])
Ejemplo explicado
arr[0, 1, 2]imprime el valor 6.
Y esta es la razón:
Ejemplo
Imprime el último elemento de la segunda atenuación:
import numpy as np
Rebanado de matriz NumPy
❮ AnteriorPróximo ❯
Matrices de corte
Cortar en python significa tomar elementos de un índice dado a otro índice dado.
Ejemplo
Divida los elementos del índice 1 al índice 5 de la siguiente matriz:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
print(arr[1:5])
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
print(arr[4:])
Ejemplo
Cortar elementos desde el principio hasta el índice 4 (no incluido):
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
print(arr[:4])
Rebanado negativo
Utilice el operador menos para hacer referencia a un índice desde el final:
Ejemplo
Corte desde el índice 3 desde el final hasta el índice 1 desde el final:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
print(arr[-3:-1])
PASO
Utilice el stepvalor para determinar el paso del corte:
Ejemplo
Devuelve todos los demás elementos del índice 1 al índice 5:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
print(arr[1:5:2])
Ejemplo
Devuelve todos los demás elementos de la matriz completa:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
print(arr[::2])
import numpy as np
print(arr[1, 1:4])
Ejemplo
De ambos elementos, devuelve el índice 2:
import numpy as np
print(arr[0:2, 2])
Ejemplo
De ambos elementos, corte el índice 1 al índice 4 (no incluido), esto devolverá una matriz
2-D:
import numpy as np
print(arr[0:2, 1:4])
A continuación se muestra una lista de todos los tipos de datos en NumPy y los
caracteres utilizados para representarlos.
i - entero
b - booleano
u - entero sin signo
f - flotar
c - flotador complejo
m - timedelta
M - fecha y hora
O - objeto
S - cuerda
U - cadena unicode
V - fragmento fijo de memoria para otro tipo (vacío)
import numpy as np
arr = np.array([1, 2, 3, 4])
print(arr.dtype)
Ejemplo
Obtenga el tipo de datos de una matriz que contiene cadenas:
import numpy as np
arr = np.array(['apple', 'banana', 'cherry'])
print(arr.dtype)
Ejemplo
Cree una matriz con cadena de tipo de datos:
import numpy as np
arr = np.array([1, 2, 3, 4], dtype='S')
print(arr)
print(arr.dtype)
Ejemplo
Cree una matriz con tipo de datos entero de 4 bytes:
import numpy as np
arr = np.array([1, 2, 3, 4], dtype='i4')
print(arr)
print(arr.dtype)
Ejemplo
Una cadena no entera como 'a' no se puede convertir a entero (generará un error):
import numpy as np
Ejemplo
Cambie el tipo de datos de flotante a entero utilizando 'i'como valor de parámetro:
import numpy as np
arr = np.array([1.1, 2.1, 3.1])
newarr = arr.astype('i')
print(newarr)
print(newarr.dtype)
Ejemplo
Cambie el tipo de datos de flotante a entero utilizando intcomo valor de parámetro:
import numpy as np
arr = np.array([1.1, 2.1, 3.1])
newarr = arr.astype(int)
print(newarr)
print(newarr.dtype)
Ejemplo
Cambie el tipo de datos de entero a booleano:
import numpy as np
arr = np.array([1, 0, 3])
newarr = arr.astype(bool)
print(newarr)
print(newarr.dtype)
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
arr[0] = 42
print(arr)
print(x)
La copia NO DEBE verse afectada por los cambios realizados en la matriz original.
VER:
Ejemplo
Cree una vista, cambie la matriz original y muestre ambas matrices:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
arr[0] = 42
print(arr)
print(x)
La vista DEBE verse afectada por los cambios realizados en la matriz original.
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
x[0] = 31
print(arr)
print(x)
La matriz original DEBERÍA verse afectada por los cambios realizados en la vista.
Cada matriz NumPy tiene el atributo baseque devuelveNone si la matriz posee los datos.
Ejemplo
Imprima el valor del atributo base para verificar si una matriz posee sus datos o no:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
y = arr.view()
print(x.base)
print(y.base)
Vuelve la copia None.
La vista devuelve la matriz original.
import numpy as np
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print(arr.shape)
El ejemplo anterior devuelve (2, 4), lo que significa que la matriz tiene 2 dimensiones y
cada dimensión tiene 4 elementos.
Ejemplo
Cree una matriz con 5 dimensiones usando ndminun vector con valores 1,2,3,4 y verifique
que la última dimensión tenga el valor 4:
import numpy as np
print(arr)
print('shape of array :', arr.shape)
En el ejemplo anterior, en el índice 4 tenemos el valor 4, por lo que podemos decir que la
quinta (4 + 1ª) dimensión tiene 4 elementos.
Remodelando matrices
Reformar significa cambiar la forma de una matriz.
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
newarr = arr.reshape(4, 3)
print(newarr)
La dimensión más externa tendrá 2 matrices que contienen 3 matrices, cada una con 2
elementos:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
newarr = arr.reshape(2, 3, 2)
print(newarr)
Ejemplo
Intente convertir una matriz 1D con 8 elementos en una matriz 2D con 3 elementos en
cada dimensión (generará un error):
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
newarr = arr.reshape(3, 3)
print(newarr)
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
print(arr.reshape(2, 4).base)
Dimensión desconocida
Se le permite tener una dimensión "desconocida".
Lo que significa que no tiene que especificar un número exacto para una de las
dimensiones en el método de remodelación.
Ejemplo
Convierta una matriz 1D con 8 elementos en una matriz 3D con elementos 2x2:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
print(newarr)
Inténtalo tú mismo "
Ejemplo
Convierta la matriz en una matriz 1D:
import numpy as np
newarr = arr.reshape(-1)
print(newarr)
Nota: Hay una gran cantidad de funciones para cambiar la forma de las matrices en
numpy flatten, ravely también para la reordenación de los
elementos rot90, flip, fliplr, flipudetc. Estos caen bajo Intermedio a la sección avanzada
de numpy.
Iterando matrices
Iterar significa pasar por los elementos uno por uno.
Como tratamos con matrices multidimensionales en numpy, podemos hacer esto usando
el forbucle básico de Python.
Si iteramos en una matriz 1-D, pasará por cada elemento uno por uno.
Ejemplo
Itere en los elementos de la siguiente matriz 1-D:
import numpy as np
arr = np.array([1, 2, 3])
for x in arr:
print(x)
Inténtalo tú mismo "
Ejemplo
Itere en los elementos de la siguiente matriz 2-D:
import numpy as np
for x in arr:
print(x)
Para devolver los valores reales, los escalares, tenemos que iterar las matrices en cada
dimensión.
Ejemplo
Itere en cada elemento escalar de la matriz 2-D:
import numpy as np
for x in arr:
for y in x:
print(y)
Ejemplo
Itere en los elementos de la siguiente matriz 3D:
import numpy as np
for x in arr:
print(x)
Para devolver los valores reales, los escalares, tenemos que iterar las matrices en cada
dimensión.
Ejemplo
Itere hasta los escalares:
import numpy as np
for x in arr:
for y in x:
for z in y:
print(z)
Ejemplo
Itere a través de la siguiente matriz 3-D:
import numpy as np
for x in np.nditer(arr):
print(x)
Inténtalo tú mismo "
NumPy no cambia el tipo de datos del elemento en el lugar (donde el elemento está en la
matriz) por lo que necesita algún otro espacio para realizar esta acción, ese espacio extra
se llama búfer, y para habilitarlo nditer()pasamos flags=['buffered'].
Ejemplo
Itere a través de la matriz como una cadena:
import numpy as np
arr = np.array([1, 2, 3])
Ejemplo
Itere a través de cada elemento escalar de la matriz 2D omitiendo 1 elemento:
import numpy as np
for x in np.nditer(arr[:, ::2]):
print(x)
Ejemplo
Enumere los siguientes elementos de matrices 1D:
import numpy as np
arr = np.array([1, 2, 3])
for idx, x in np.ndenumerate(arr):
print(idx, x)
Ejemplo
Enumere los siguientes elementos de la matriz 2D:
import numpy as np
for idx, x in np.ndenumerate(arr):
print(idx, x)
En SQL unimos tablas en función de una clave, mientras que en NumPy unimos matrices
por ejes.
Ejemplo
Unir dos matrices
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
Ejemplo
Une dos matrices 2-D a lo largo de filas (eje = 1):
import numpy as np
print(arr)
Podemos concatenar dos matrices 1-D a lo largo del segundo eje, lo que resultaría en
colocarlas una sobre la otra, es decir. apilado.
Ejemplo
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
print(arr)
Ejemplo
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
print(arr)
Ejemplo
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
print(arr)
Ejemplo
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
arr = np.dstack((arr1, arr2))
print(arr)
La unión fusiona varias matrices en una y la división divide una matriz en múltiples.
Ejemplo
Divida la matriz en 3 partes:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
newarr = np.array_split(arr, 3)
print(newarr)
Ejemplo
Divida la matriz en 4 partes:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
newarr = np.array_split(arr, 4)
print(newarr)
Si divide una matriz en 3 matrices, puede acceder a ellas desde el resultado como
cualquier elemento de la matriz:
Ejemplo
Acceda a las matrices divididas:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
newarr = np.array_split(arr, 3)
print(newarr[0])
print(newarr[1])
print(newarr[2])
Ejemplo
Divida la matriz 2-D en tres matrices 2-D.
import numpy as np
newarr = np.array_split(arr, 3)
print(newarr)
Veamos otro ejemplo, esta vez cada elemento de las matrices 2-D contiene 3 elementos.
Ejemplo
Divida la matriz 2-D en tres matrices 2-D.
import numpy as np
newarr = np.array_split(arr, 3)
print(newarr)
El siguiente ejemplo también devuelve tres matrices 2-D, pero se dividen a lo largo de la
fila (eje = 1).
Ejemplo
Divida la matriz 2-D en tres matrices 2-D a lo largo de las filas.
import numpy as np
print(newarr)
Ejemplo
Utilice el hsplit()método para dividir la matriz 2-D en tres matrices 2-D a lo largo de las
filas.
import numpy as np
newarr = np.hsplit(arr, 3)
print(newarr)
Inténtalo tú mismo "
Buscando matrices
Puede buscar en una matriz un valor determinado y devolver los índices que coinciden.
Ejemplo
Encuentre los índices donde el valor es 4:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 4, 4])
x = np.where(arr == 4)
print(x)
Ejemplo
Encuentre los índices donde los valores son pares:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
x = np.where(arr%2 == 0)
print(x)
Ejemplo
Encuentre los índices donde los valores son impares:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
x = np.where(arr%2 == 1)
print(x)
Búsqueda ordenada
Hay un método llamado searchsorted()que realiza una búsqueda binaria en la matriz y
devuelve el índice donde se insertaría el valor especificado para mantener el orden de
búsqueda.
Ejemplo
Encuentre los índices donde se debe insertar el valor 7:
import numpy as np
arr = np.array([6, 7, 8, 9])
x = np.searchsorted(arr, 7)
print(x)
Ejemplo explicado: El número 7 debe insertarse en el índice 1 para seguir siendo el orden
de clasificación.
Ejemplo
Encuentre los índices donde se debe insertar el valor 7, comenzando por la derecha:
import numpy as np
arr = np.array([6, 7, 8, 9])
x = np.searchsorted(arr, 7, side='right')
print(x)
Inténtalo tú mismo "
Ejemplo explicado: El número 7 debe insertarse en el índice 2 para seguir siendo el orden
de clasificación.
Varios valores
Para buscar más de un valor, use una matriz con los valores especificados.
Ejemplo
Encuentre los índices donde se deben insertar los valores 2, 4 y 6:
import numpy as np
arr = np.array([1, 3, 5, 7])
x = np.searchsorted(arr, [2, 4, 6])
print(x)
El valor de retorno es una matriz: [1 2 3]contiene los tres índices donde se insertarían 2,
4, 6 en la matriz original para mantener el orden.
Ordenación de matrices
Clasificar significa poner elementos en una secuencia ordenada .
El objeto ndarray NumPy tiene una función llamada sort(), que ordenará una matriz
especificada.
Ejemplo
Ordenar la matriz:
import numpy as np
arr = np.array([3, 2, 0, 1])
print(np.sort(arr))
Nota: este método devuelve una copia de la matriz, sin modificar la matriz original.
También puede ordenar matrices de cadenas o cualquier otro tipo de datos:
Ejemplo
Ordene la matriz alfabéticamente:
import numpy as np
arr = np.array(['banana', 'cherry', 'apple'])
print(np.sort(arr))
Ejemplo
Ordene una matriz booleana:
import numpy as np
print(np.sort(arr))
Ejemplo
Ordene una matriz 2-D:
import numpy as np
print(np.sort(arr))
Arreglos de filtrado
Obtener algunos elementos de una matriz existente y crear una nueva matriz a partir de
ellos se denomina filtrado .
Ejemplo
Cree una matriz a partir de los elementos del índice 0 y 2:
import numpy as np
arr = np.array([41, 42, 43, 44])
newarr = arr[x]
print(newarr)
Porque el nuevo filtro contiene solo los valores donde la matriz del filtro tenía el
valor True, en este caso, el índice 0 y 2.
Ejemplo
Cree una matriz de filtros que devuelva solo valores superiores a 42:
import numpy as np
arr = np.array([41, 42, 43, 44])
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)
Ejemplo
Cree una matriz de filtro que devolverá solo elementos pares de la matriz original:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)
Ejemplo
Cree una matriz de filtros que devuelva solo valores superiores a 42:
import numpy as np
arr = np.array([41, 42, 43, 44])
filter_arr = arr > 42
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)
Ejemplo
Cree una matriz de filtro que devolverá solo elementos pares de la matriz original:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
filter_arr = arr % 2 == 0
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)
Si hay un programa para generar un número aleatorio, se puede predecir, por lo que no
es realmente aleatorio.
Ejemplo
Genere un número entero aleatorio de 0 a 100:
from numpy import random
x = random.randint(100)
print(x)
Ejemplo
Genere un flotador aleatorio de 0 a 1:
from numpy import random
x = random.rand()
print(x)
Ejemplo
Genere una matriz 1-D que contenga 5 números enteros aleatorios de 0 a 100:
from numpy import random
x=random.randint(100, size=(5))
print(x)
Ejemplo
Genere una matriz 2-D con 3 filas, cada fila contiene 5 números enteros aleatorios de 0 a
100:
from numpy import random
x = random.randint(100, size=(3, 5))
print(x)
Flotadores
El rand()método también le permite especificar la forma de la matriz.
Ejemplo
Genere una matriz 1-D que contenga 5 flotantes aleatorios:
from numpy import random
x = random.rand(5)
print(x)
Ejemplo
Genere una matriz 2-D con 3 filas, cada fila contiene 5 números aleatorios:
from numpy import random
x = random.rand(3, 5)
print(x)
El choice()método toma una matriz como parámetro y devuelve aleatoriamente uno de los
valores.
Ejemplo
Devuelve uno de los valores en una matriz:
from numpy import random
x = random.choice([3, 5, 7, 9])
print(x)
Ejemplo
Genere una matriz 2-D que consta de los valores del parámetro de matriz (3, 5, 7 y 9):
from numpy import random
x = random.choice([3, 5, 7, 9], size=(3, 5))
print(x)
Distribución aleatoria
Una distribución aleatoria es un conjunto de números aleatorios que siguen una
determinada función de densidad de probabilidad .
Ejemplo
Genere una matriz 1-D que contenga 100 valores, donde cada valor debe ser 3, 5, 7 o 9.
from numpy import random
print(x)
Ejemplo
El mismo ejemplo que el anterior, pero devuelve una matriz 2-D con 3 filas, cada una de
las cuales contiene 5 valores.
from numpy import random
print(x)
Permutaciones aleatorias
Permutaciones aleatorias de elementos
Una permutación se refiere a una disposición de elementos. por ejemplo, [3, 2, 1] es una
permutación de [1, 2, 3] y viceversa.
Arreglos aleatorios
Shuffle significa cambiar la disposición de los elementos en su lugar. es decir, en la
propia matriz.
Ejemplo
Mezcle aleatoriamente los elementos de la siguiente matriz:
from numpy import random
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
random.shuffle(arr)
print(arr)
from numpy import random
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(random.permutation(arr))
Seaborn
Visualice distribuciones con Seaborn
Seaborn es una biblioteca que usa Matplotlib debajo para trazar gráficos. Se utilizará para
visualizar distribuciones aleatorias.
Instale Seaborn.
Si ya tiene Python y PIP instalados en un sistema, instálelo con este comando:
C:\Users\Your Name>pip install seaborn
Distplots
Distplot significa gráfico de distribución, toma como entrada una matriz y traza una curva
correspondiente a la distribución de puntos en la matriz.
Importar Matplotlib
Importe el objeto pyplot del módulo Matplotlib en su código usando la siguiente
declaración:
import matplotlib.pyplot as plt
Importar Seaborn
Importe el módulo Seaborn en su código usando la siguiente declaración:
import seaborn as sns
sns.distplot([0, 1, 2, 3, 4, 5])
plt.show()
sns.distplot([0, 1, 2, 3, 4, 5], hist=False)
plt.show()
scale - (Desviación estándar) qué tan plana debe ser la distribución del gráfico.
Ejemplo
Genere una distribución normal aleatoria de tamaño 2x3:
from numpy import random
x = random.normal(size=(2, 3))
print(x)
Inténtalo tú mismo "
Ejemplo
Genere una distribución normal aleatoria de tamaño 2x3 con media en 1 y desviación
estándar de 2:
from numpy import random
print(x)
sns.distplot(random.normal(size=1000), hist=False)
plt.show()
Resultado
Inténtalo tú mismo "
Nota: La curva de una distribución normal también se conoce como curva de campana
debido a la curva en forma de campana.
Distribución binomial
Distribución binomial
La distribución binomial es una distribución discreta .
p - probabilidad de ocurrencia de cada prueba (por ejemplo, para el lanzamiento de una
moneda de 0,5 cada una).
Ejemplo
Dados 10 intentos de lanzamiento de moneda, genera 10 puntos de datos:
from numpy import random
print(x)
plt.show()
Resultado
Inténtalo tú mismo "
Ejemplo
from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns
plt.show()
Resultado
Distribución de Poisson
La distribución de Poisson es una distribución discreta .
lam - tasa o número conocido de apariciones, por ejemplo, 2 para el problema anterior.
Ejemplo
Genere una distribución aleatoria de 1x10 para la ocurrencia 2:
from numpy import random
x = random.poisson(lam=2, size=10)
print(x)
plt.show()
Resultado
Ejemplo
from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns
plt.show()
Resultado
Ejemplo
from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns
plt.show()
Resultado
Distribución uniforme
Se usa para describir la probabilidad donde cada evento tiene las mismas posibilidades de
ocurrir.
Ejemplo
Cree una muestra de distribución uniforme 2x3:
from numpy import random
x = random.uniform(size=(2, 3))
print(x)
sns.distplot(random.uniform(size=1000), hist=False)
plt.show()
Resultado
Distribución Logística
La distribución logística se utiliza para describir el crecimiento.
Ejemplo
Extraiga muestras de 2x3 de una distribución logística con media en 1 y stddev 2.0:
from numpy import random
print(x)
sns.distplot(random.logistic(size=1000), hist=False)
plt.show()
Resultado
Ejemplo
from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns
plt.show()
Resultado
Distribución multinomial
La distribución multinomial es una generalización de la distribución binomial.
Describe los resultados de escenarios multinomiales a diferencia del binomio, donde los
escenarios deben ser solo uno de dos. por ejemplo, tipo de sangre de una población,
resultado de la tirada de dados.
pvals - lista de probabilidades de resultados (por ejemplo, [1/6, 1/6, 1/6, 1/6, 1/6, 1/6]
para la tirada de dados).
Ejemplo
Saque una muestra para tirar los dados:
from numpy import random
x = random.multinomial(n=6, pvals=[1/6, 1/6, 1/6, 1/6, 1/6, 1/6])
print(x)
Distribución exponencial
La distribución exponencial se utiliza para describir el tiempo hasta el próximo evento,
por ejemplo, fracaso / éxito, etc.
scale - inversa de la tasa (ver lam en la distribución de Poisson) por defecto es 1.0.
Ejemplo
Dibuje una muestra para distribución exponencial con escala 2.0 con tamaño 2x3:
from numpy import random
x = random.exponential(scale=2, size=(2, 3))
print(x)
sns.distplot(random.exponential(size=1000), hist=False)
plt.show()
Resultado
Ejemplo
Dibuje una muestra para la distribución chi cuadrado con grado de libertad 2 con tamaño
2x3:
from numpy import random
x = random.chisquare(df=2, size=(2, 3))
print(x)
plt.show()
Resultado
Distribución de Rayleigh
La distribución de Rayleigh se utiliza en el procesamiento de señales.
scale - (desviación estándar) decide qué tan plana será la distribución por defecto 1.0).
Ejemplo
Extraiga una muestra para la distribución rayleigh con una escala de 2 con un tamaño de
2x3:
from numpy import random
x = random.rayleigh(scale=2, size=(2, 3))
print(x)
sns.distplot(random.rayleigh(size=1000), hist=False)
plt.show()
Resultado
Ejemplo
Dibuje una muestra para la distribución de Pareto con forma de 2 con tamaño 2x3:
from numpy import random
x = random.pareto(a=2, size=(2, 3))
print(x)
plt.show()
Resultado
Distribución Zipf
Las distribuciones de Zipf se utilizan para muestrear datos según la ley de zipf.
Ley de Zipf: En una colección, el enésimo término común es 1 / n veces del término más
común. Por ejemplo, la quinta palabra común en inglés aparece casi una quinta vez de la
palabra más utilizada.
Ejemplo
Extraiga una muestra para la distribución zipf con el parámetro de distribución 2 con
tamaño 2x3:
from numpy import random
x = random.zipf(a=2, size=(2, 3))
print(x)
Inténtalo tú mismo "
Ejemplo
from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns
x = random.zipf(a=2, size=1000)
sns.distplot(x[x<10], kde=False)
plt.show()
Resultado
NumPy ufuncs
Qué son los ufuncs?
ufuncs significa "Funciones universales" y son funciones NumPy que operan en
el ndarrayobjeto.
También brindan transmisión y métodos adicionales como reducir, acumular, etc. que son
muy útiles para el cálculo.
where Matriz booleana o condición que define dónde deben tener lugar las operaciones.
¿Qué es la vectorización?
La conversión de declaraciones iterativas en una operación basada en vectores se
denomina vectorización.
Es más rápido ya que las CPU modernas están optimizadas para tales operaciones.
lista 2: [4, 5, 6, 7]
Una forma de hacerlo es iterar sobre ambas listas y luego sumar cada elemento.
Ejemplo
Sin ufunc, podemos usar el zip()método integrado de Python :
x = [1, 2, 3, 4]
y = [4, 5, 6, 7]
z = []
for i, j in zip(x, y):
z.append(i + j)
print(z)
NumPy tiene un ufunc para esto, llamado add(x, y) que producirá el mismo resultado.
Ejemplo
Con ufunc, podemos usar la add()función:
import numpy as np
x = [1, 2, 3, 4]
y = [4, 5, 6, 7]
z = np.add(x, y)
print(z)
Ejemplo
Cree su propio ufunc para agregar:
import numpy as np
def myadd(x, y):
return x+y
myadd = np.frompyfunc(myadd, 2, 1)
print(myadd([1, 2, 3, 4], [5, 6, 7, 8]))
Inténtalo tú mismo "
Ejemplo
Compruebe si una función es ufunc:
import numpy as np
print(type(np.add))
Inténtalo tú mismo "
Si no es ufunc, devolverá otro tipo, como esta función NumPy incorporada para unir dos o
más matrices:
Ejemplo
Verifique el tipo de otra función: concatenar ():
import numpy as np
print(type(np.concatenate))
Inténtalo tú mismo "
Ejemplo
Marque el tipo de algo que no existe. Esto producirá un error:
import numpy as np
print(type(np.blahblah))
Inténtalo tú mismo "
Ejemplo
Use una instrucción if para verificar si la función es ufunc o no:
import numpy as np
if type(np.add) == np.ufunc:
print('add is ufunc')
else:
print('add is not ufunc')
Aritmética simple
Puede usar operadores aritméticos + - * / directamente entre matrices NumPy, pero esta
sección analiza una extensión de la misma donde tenemos funciones que pueden tomar
cualquier objeto similar a una matriz, por ejemplo, listas, tuplas, etc. y realizar
operaciones aritméticas condicionalmente .
Adición
La add()función suma el contenido de dos matrices y devuelve los resultados en una
nueva matriz.
Ejemplo
Agregue los valores en arr1 a los valores en arr2:
import numpy as np
arr1 = np.array([10, 11, 12, 13, 14, 15])
arr2 = np.array([20, 21, 22, 23, 24, 25])
print(newarr)
Inténtalo tú mismo "
El ejemplo anterior devolverá [30 32 34 36 38 40] que son las sumas de 10 + 20, 11 +
21, 12 + 22, etc.
Sustracción
La subtract()función resta los valores de una matriz con los valores de otra matriz y
devuelve los resultados en una nueva matriz.
Ejemplo
Reste los valores en arr2 de los valores en arr1:
import numpy as np
arr1 = np.array([10, 20, 30, 40, 50, 60])
arr2 = np.array([20, 21, 22, 23, 24, 25])
print(newarr)
Inténtalo tú mismo "
El ejemplo anterior devolverá [-10-1 8 17 26 35] que es el resultado de 10-20, 20-21,
30-22, etc.
Multiplicación
La multiply()función multiplica los valores de una matriz con los valores de otra matriz y
devuelve los resultados en una nueva matriz.
Ejemplo
Multiplica los valores de arr1 con los valores de arr2:
import numpy as np
arr1 = np.array([10, 20, 30, 40, 50, 60])
arr2 = np.array([20, 21, 22, 23, 24, 25])
print(newarr)
Inténtalo tú mismo "
El ejemplo anterior devolverá [200420660920 1200 1500] que es el resultado de 10 *
20, 20 * 21, 30 * 22, etc.
División
La divide()función divide los valores de una matriz con los valores de otra matriz y
devuelve los resultados en una nueva matriz.
Ejemplo
Divida los valores en arr1 con los valores en arr2:
import numpy as np
arr1 = np.array([10, 20, 30, 40, 50, 60])
arr2 = np.array([3, 5, 10, 8, 2, 33])
newarr = np.divide(arr1, arr2)
print(newarr)
Inténtalo tú mismo "
El ejemplo anterior devolverá [3.33333333 4. 3. 5. 25. 1.81818182] que es el resultado
de 10/3, 20/5, 30/10, etc.
Poder
La power()función eleva los valores de la primera matriz a la potencia de los valores de la
segunda matriz y devuelve los resultados en una nueva matriz.
Ejemplo
Eleve los valores de arr1 a la potencia de los valores de arr2:
import numpy as np
arr1 = np.array([10, 20, 30, 40, 50, 60])
arr2 = np.array([3, 5, 6, 8, 2, 33])
print(newarr)
Inténtalo tú mismo "
El ejemplo anterior devolverá [1000 3200000 729000000 6553600000000 2500 0] que
es el resultado de 10 * 10 * 10, 20 * 20 * 20 * 20 * 20, 30 * 30 * 30 * 30 * 30 * 30,
etc.
Recordatorio
Tanto el mod()y las remainder()funciones devuelven el resto de los valores de la primera
matriz correspondiente a los valores de la segunda matriz, y devolver los resultados en
una matriz nueva.
Ejemplo
Devuelve los restos:
import numpy as np
arr1 = np.array([10, 20, 30, 40, 50, 60])
arr2 = np.array([3, 7, 9, 8, 2, 33])
Ejemplo
Devuelve los restos:
import numpy as np
arr1 = np.array([10, 20, 30, 40, 50, 60])
arr2 = np.array([3, 7, 9, 8, 2, 33])
print(newarr)
Inténtalo tú mismo "
Cociente y Mod
La divmod()función devuelve tanto el cociente como el mod. El valor de retorno son dos
matrices, la primera matriz contiene el cociente y la segunda matriz contiene el mod.
Ejemplo
Devuelve el cociente y el mod:
import numpy as np
arr1 = np.array([10, 20, 30, 40, 50, 60])
arr2 = np.array([3, 7, 9, 8, 2, 33])
print(newarr)
Inténtalo tú mismo "
El ejemplo anterior devolverá:
(matriz ([3, 2, 3, 5, 25, 1]), matriz ([1, 6, 3, 0, 0, 27]))
La primera matriz representa los cocientes, (la valor entero cuando divide 10 con 3, 20
con 7, 30 con 9, etc.
La segunda matriz representa los restos de las mismas divisiones.
Valores absolutos
Tanto el absolute()y las abs()funciones de las funciones de realizar la misma operación
absoluta elemento a elemento, sino que debe utilizar absolute() para evitar confusiones
con incorporada del pitónmath.abs()
Ejemplo
Devuelve el cociente y el mod:
import numpy as np
newarr = np.absolute(arr)
print(newarr)
Inténtalo tú mismo "
El ejemplo anterior devolverá [1 2 1 2 3 4].
Redondeo de decimales
Hay principalmente cinco formas de redondear decimales en NumPy:
truncamiento
reparar
redondeo
piso
fortificar techo
Truncamiento
Elimina los decimales y devuelve el número flotante más cercano a cero. Utilice
las funciones trunc()y fix().
Ejemplo
Truncar elementos de la siguiente matriz:
import numpy as np
arr = np.trunc([-3.1666, 3.6667])
print(arr)
import numpy as np
arr = np.fix([-3.1666, 3.6667])
print(arr)
Redondeo
La around()función incrementa el dígito o decimal anterior en 1 si> = 5; de lo contrario,
no hace nada.
Ejemplo
Redondee 3,1666 a 2 decimales:
import numpy as np
arr = np.around(3.1666, 2)
print(arr)
Piso
La función floor () redondea el decimal al entero inferior más cercano.
Ejemplo
Suelo los elementos de la siguiente matriz:
import numpy as np
arr = np.floor([-3.1666, 3.6667])
print(arr)
Inténtalo tú mismo "
Fortificar techo
La función ceil () redondea el decimal al entero superior más cercano.
Ejemplo
Ceil los elementos de la siguiente matriz:
import numpy as np
arr = np.ceil([-3.1666, 3.6667])
print(arr)
Registros NumPy
NumPy proporciona funciones para realizar el registro en la base 2, e y 10.
También exploraremos cómo podemos tomar el registro para cualquier base creando un
ufunc personalizado.
Todas las funciones de registro colocarán -inf o inf en los elementos si el registro no se
puede calcular.
Ejemplo
Encuentre el registro en la base 2 de todos los elementos de la siguiente matriz:
import numpy as np
arr = np.arange(1, 10)
print(np.log2(arr))
Inténtalo tú mismo "
Nota: La arange(1, 10)función devuelve una matriz con números enteros desde 1
(incluido) hasta 10 (no incluido).
Ejemplo
Encuentre el registro en la base 10 de todos los elementos de la siguiente matriz:
import numpy as np
arr = np.arange(1, 10)
print(np.log10(arr))
Inténtalo tú mismo "
Ejemplo
Encuentre el registro en la base e de todos los elementos de la siguiente matriz:
import numpy as np
arr = np.arange(1, 10)
print(np.log(arr))
Inténtalo tú mismo "
Ejemplo
from math import log
import numpy as np
nplog = np.frompyfunc(log, 2, 1)
print(nplog(100, 15))
Sumatorias NumPy
¿Cuál es la diferencia entre suma y suma?
La suma se realiza entre dos argumentos, mientras que la suma se realiza sobre n
elementos.
Ejemplo
Agregue los valores en arr1 a los valores en arr2:
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([1, 2, 3])
print(newarr)
Inténtalo tú mismo "
Devoluciones: [2 4 6]
Ejemplo
Sume los valores en arr1 y los valores en arr2:
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([1, 2, 3])
print(newarr)
Inténtalo tú mismo "
Devoluciones: 12
Ejemplo
Realice la suma en la siguiente matriz sobre el primer eje:
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([1, 2, 3])
print(newarr)
Inténtalo tú mismo "
Devoluciones: [6 6]
Suma acumulativa
Suma acumulativa significa agregar parcialmente los elementos en una matriz.
Ejemplo
Realice una suma acumulativa en la siguiente matriz:
import numpy as np
arr = np.array([1, 2, 3])
newarr = np.cumsum(arr)
print(newarr)
Inténtalo tú mismo "
Devoluciones: [1 3 6]
Productos NumPy
Para encontrar el producto de los elementos en una matriz, use la prod()función.
Ejemplo
Encuentre el producto de los elementos de esta matriz:
import numpy as np
arr = np.array([1, 2, 3, 4])
x = np.prod(arr)
print(x)
Inténtalo tú mismo "
Devuelve: 24 porque 1 * 2 * 3 * 4 = 24
Ejemplo
Encuentre el producto de los elementos de dos matrices:
import numpy as np
arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([5, 6, 7, 8])
x = np.prod([arr1, arr2])
print(x)
Inténtalo tú mismo "
Devuelve: 40320 porque 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 = 40320
Ejemplo
Realice la suma en la siguiente matriz sobre el primer eje:
import numpy as np
arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([5, 6, 7, 8])
print(newarr)
Inténtalo tú mismo "
Devoluciones: [24 1680]
Producto acumulativo
Producto acumulativo significa tomar el producto parcialmente.
Ejemplo
Tome el producto acumulativo de todos los elementos para la siguiente matriz:
import numpy as np
arr = np.array([5, 6, 7, 8])
newarr = np.cumprod(arr)
print(newarr)
Inténtalo tú mismo "
Devoluciones: [5 30 210 1680]
Diferencias NumPy
❮ AnteriorPróximo ❯
Por ejemplo, para [1, 2, 3, 4], la diferencia discreta sería [2-1, 3-2, 4-3] = [1, 1, 1]
Ejemplo
Calcule la diferencia discreta de la siguiente matriz:
import numpy as np
arr = np.array([10, 15, 25, 5])
newarr = np.diff(arr)
print(newarr)
Inténtalo tú mismo "
Devuelve: [5 10 -20] porque 15-10 = 5, 25-15 = 10 y 5-25 = -20
Por ejemplo, para [1, 2, 3, 4], la diferencia discreta con n = 2 sería [2-1, 3-2, 4-3] = [1,
1, 1], entonces, como n = 2, lo haremos una vez más, con el nuevo resultado: [1-1, 1-1]
= [0, 0]
Ejemplo
Calcule la diferencia discreta de la siguiente matriz dos veces:
import numpy as np
arr = np.array([10, 15, 25, 5])
print(newarr)
Inténtalo tú mismo "
Devuelve: [5 -30] porque: 15-10 = 5, 25-15 = 10 y 5-25 = -20 Y 10-5 = 5 y -20-10 =
-30
Ejemplo
Encuentra el MCM de los siguientes dos números:
import numpy as np
num1 = 4
num2 = 6
x = np.lcm(num1, num2)
print(x)
Inténtalo tú mismo "
Devuelve: 12 porque ese es el mínimo común múltiplo de ambos números (4 * 3 = 12 y
6 * 2 = 12).
Ejemplo
Encuentre el LCM de los valores de la siguiente matriz:
import numpy as np
arr = np.array([3, 6, 9])
x = np.lcm.reduce(arr)
print(x)
Inténtalo tú mismo "
Devuelve: 18 porque ese es el mínimo común múltiplo de los tres números (3 * 6 = 18,
6 * 3 = 18 y 9 * 2 = 18).
Ejemplo
Encuentre el LCM de toda una matriz donde la matriz contiene todos los números enteros
del 1 al 10:
import numpy as np
arr = np.arange(1, 11)
x = np.lcm.reduce(arr)
print(x)
Ejemplo
Encuentre el HCF de los siguientes dos números:
import numpy as np
num1 = 6
num2 = 9
x = np.gcd(num1, num2)
print(x)
Inténtalo tú mismo "
Devuelve: 3 porque ese es el número más alto entre ambos números se pueden dividir
(6/3 = 2 y 9 * 3 = 3).
Encontrar GCD en matrices
Para encontrar el factor común más alto de todos los valores en una matriz, puede usar
el reduce()método.
Ejemplo
Encuentre el GCD para todos los números en la siguiente matriz:
import numpy as np
arr = np.array([20, 8, 32, 36, 16])
x = np.gcd.reduce(arr)
print(x)
Inténtalo tú mismo "
Devuelve: 4 porque es el número más alto por el que se pueden dividir todos los valores.
Funciones trigonométricas de
NumPy
NumPy proporciona los ufuncs sin(), cos()y tan()que los valores de tomas en radianes y
producir el pecado correspondientes, cos y valores de bronceado.
Ejemplo
Encuentre el valor del seno de PI / 2:
import numpy as np
x = np.sin(np.pi/2)
print(x)
Inténtalo tú mismo "
Ejemplo
Encuentre valores de seno para todos los valores en arr:
import numpy as np
x = np.sin(arr)
print(x)
Inténtalo tú mismo "
Ejemplo
Convierta todos los valores en la siguiente matriz arr a radianes:
import numpy as np
arr = np.array([90, 180, 270, 360])
x = np.deg2rad(arr)
print(x)
Inténtalo tú mismo "
Radianes a Grados
Ejemplo
Convierta todos los valores en la siguiente matriz arr a grados:
import numpy as np
x = np.rad2deg(arr)
print(x)
Inténtalo tú mismo "
Encontrar ángulos
Hallar ángulos a partir de valores de seno, cos, tan. Por ejemplo, sin, cos y tan inversa
(arcsin, arccos, arctan).
NumPy proporciona ufuncs arcsin(), arccos()y arctan()eso produce valores en radianes
para los valores correspondientes de sen, cos y tan dados.
Ejemplo
Encuentra el ángulo de 1.0:
import numpy as np
x = np.arcsin(1.0)
print(x)
Inténtalo tú mismo "
import numpy as np
x = np.arcsin(arr)
print(x)
Inténtalo tú mismo "
Hipotenues
Encontrar hipotenues usando el teorema de Pitágoras en NumPy.
Ejemplo
Encuentre las hipotensiones para 4 bases y 3 perpendiculares:
import numpy as np
base = 3
perp = 4
x = np.hypot(base, perp)
print(x)
Ejemplo
Encuentre el valor sinh de PI / 2:
import numpy as np
x = np.sinh(np.pi/2)
print(x)
Inténtalo tú mismo "
Ejemplo
Encuentre valores de cosh para todos los valores en arr:
import numpy as np
x = np.cosh(arr)
print(x)
Inténtalo tú mismo "
Encontrar ángulos
Hallar ángulos a partir de valores de seno hiperbólico, cos, tan. Por ejemplo, sinh, cosh y
tanh inverso (arcsinh, arccosh, arctanh).
Ejemplo
Encuentra el ángulo de 1.0:
import numpy as np
x = np.arcsinh(1.0)
print(x)
Inténtalo tú mismo "
import numpy as np
arr = np.array([0.1, 0.2, 0.5])
x = np.arctanh(arr)
print(x)
Ejemplo
Convierta la siguiente matriz con elementos repetidos en un conjunto:
import numpy as np
arr = np.array([1, 1, 1, 2, 3, 4, 5, 5, 6, 7])
x = np.unique(arr)
print(x)
Inténtalo tú mismo "
Encontrar Unión
Para encontrar los valores únicos de dos matrices, use el union1d()método.
Ejemplo
Encuentre la unión de los siguientes dos conjuntos de matrices:
import numpy as np
arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([3, 4, 5, 6])
print(newarr)
Inténtalo tú mismo "
Encontrar la intersección
Para encontrar solo los valores que están presentes en ambas matrices, use
el intersect1d()método.
Ejemplo
Encuentre la intersección de los siguientes dos conjuntos de matrices:
import numpy as np
arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([3, 4, 5, 6])
print(newarr)
Inténtalo tú mismo "
Nota: el intersect1d()método toma un argumento opcional assume_unique, que si se
establece en True puede acelerar el cálculo. Siempre debe establecerse en Verdadero
cuando se trata de conjuntos.
Encontrar la diferencia
Para encontrar solo los valores en el primer conjunto que NO están presentes en el
conjunto de segundos, utilice el setdiff1d()método.
Ejemplo
Encuentre la diferencia del set1 del set2:
import numpy as np
set1 = np.array([1, 2, 3, 4])
set2 = np.array([3, 4, 5, 6])
print(newarr)
Inténtalo tú mismo "
Nota: el setdiff1d()método toma un argumento opcional assume_unique, que si se
establece en True puede acelerar el cálculo. Siempre debe establecerse en Verdadero
cuando se trata de conjuntos.
Ejemplo
Encuentre la diferencia simétrica de set1 y set2:
import numpy as np
set1 = np.array([1, 2, 3, 4])
set2 = np.array([3, 4, 5, 6])
print(newarr)
Inténtalo tú mismo "
Nota: el setxor1d()método toma un argumento opcional assume_unique, que si se
establece en True puede acelerar el cálculo. Siempre debe establecerse en Verdadero
cuando se trata de conjuntos.