Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% encontró este documento útil (0 votos)
85 vistas87 páginas

NumPy WWW School

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1/ 87

Crear un objeto ndarray de NumPy

NumPy se utiliza para trabajar con matrices. Se llama al objeto de matriz en


NumPy ndarray.

Podemos crear un ndarrayobjeto NumPy usando la array()función.

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).

Matriz anidada: son matrices que tienen matrices como elementos.

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.

Estos son los arreglos más comunes y básicos.

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.

A menudo se utilizan para representar tensores de matriz o de segundo orden.

NumPy tiene un submódulo completo dedicado a operaciones matriciales


llamado numpy.mat

Ejemplo
Cree una matriz 2-D que contenga dos matrices con los valores 1,2,3 y 4,5,6:

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

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.

A menudo se utilizan para representar un tensor de tercer orden.

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

arr = np.array([[[1, 2, 3], [4, 5, 6]], [[1, 2, 3], [4, 5, 6]]])

print(arr)
Inténtalo tú mismo "

Compruebe el número de dimensiones


NumPy Arrays proporciona el ndimatributo que devuelve un número entero que nos dice
cuántas dimensiones tiene la matriz.

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 "

Matrices de dimensiones superiores


Una matriz puede tener cualquier número de dimensiones.

Cuando se crea la matriz, puede definir el número de dimensiones mediante


el ndminargumento.

Ejemplo
Cree una matriz con 5 dimensiones y verifique que tenga 5 dimensiones:

import numpy as np

arr = np.array([1, 2, 3, 4], ndmin=5)

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.

Indexación de matrices NumPy


❮ AnteriorPróximo ❯

Acceso a elementos de matriz


La indexación de matrices es lo mismo que acceder a un elemento de matriz.

Puede acceder a un elemento de matriz consultando su número de índice.

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])

Inténtalo tú mismo "


Ejemplo
Obtenga el segundo elemento de la siguiente matriz.

import numpy as np

arr = np.array([1, 2, 3, 4])

print(arr[1])

Inténtalo tú mismo "

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])

Inténtalo tú mismo "

Acceder a matrices 2-D


Para acceder a elementos de matrices 2-D, podemos usar enteros separados por comas
que representan la dimensión y el índice del elemento.

Ejemplo
Acceda al 2do elemento en el 1er dim:

import numpy as np

arr = np.array([[1,2,3,4,5], [6,7,8,9,10]])

print('2nd element on 1st dim: ', arr[0, 1])

Inténtalo tú mismo "

Ejemplo
Acceda al quinto elemento en el segundo dim:

import numpy as np

arr = np.array([[1,2,3,4,5], [6,7,8,9,10]])

print('5th element on 2nd dim: ', arr[1, 4])


Inténtalo tú mismo "

Acceder a matrices 3-D


Para acceder a elementos de matrices 3-D, podemos usar enteros separados por comas
que representan las dimensiones y el índice del elemento.

Ejemplo
Acceda al tercer elemento de la segunda matriz de la primera matriz:

import numpy as np

arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])

print(arr[0, 1, 2])

Inténtalo tú mismo "

Ejemplo explicado
arr[0, 1, 2]imprime el valor 6.

Y esta es la razón:

El primer número representa la primera dimensión, que contiene dos matrices:


[[1, 2, 3], [4, 5, 6]]
y:
[[7, 8, 9], [10, 11, 12]]
Ya que que seleccionamos 0, nos queda la primera matriz:
[[1, 2, 3], [4, 5, 6]]

El segundo número representa la segunda dimensión, que también contiene dos


matrices:
[1, 2, 3]
y:
[4, 5, 6]
Como seleccionamos 1, nos queda la segunda matriz:
[4, 5, 6]

El tercer número representa la tercera dimensión, que contiene tres valores:


4
5
6
Ya que seleccionamos 2, terminamos con el tercer valor:
6
Indexación negativa
Utilice la indexación negativa para acceder a una matriz desde el final.

Ejemplo
Imprime el último elemento de la segunda atenuación:

import numpy as np

arr = np.array([[1,2,3,4,5], [6,7,8,9,10]])

print('Last element from 2nd dim: ', arr[1, -1])

Rebanado de matriz NumPy
❮ AnteriorPróximo ❯

Matrices de corte
Cortar en python significa tomar elementos de un índice dado a otro índice dado.

Pasamos rebanada en lugar de índice de la siguiente manera: .[start:end]

También podemos definir el paso, como esto: .[start:end:step]

Si no pasamos el inicio se considera 0

Si no pasamos end su longitud considerada de matriz en esa dimensión

Si no pasamos el paso se considera 1

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])

Inténtalo tú mismo "

Nota: El resultado incluye el índice inicial, pero excluye el índice final.


Ejemplo
Corta elementos desde el índice 4 hasta el final de la matriz:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7])

print(arr[4:])

Inténtalo tú mismo "

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])

Inténtalo tú mismo "

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])

Inténtalo tú mismo "

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])

Inténtalo tú mismo "

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])

Inténtalo tú mismo "

Cortar matrices 2-D


Ejemplo
Desde el segundo elemento, corte los elementos del índice 1 al índice 4 (no incluido):

import numpy as np

arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])

print(arr[1, 1:4])

Inténtalo tú mismo "

Nota: Recuerde que el segundo elemento tiene índice 1.

Ejemplo
De ambos elementos, devuelve el índice 2:

import numpy as np

arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])

print(arr[0:2, 2])

Inténtalo tú mismo "

Ejemplo
De ambos elementos, corte el índice 1 al índice 4 (no incluido), esto devolverá una matriz
2-D:

import numpy as np

arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])

print(arr[0:2, 1:4])

Tipos de datos en Python


Por defecto, Python tiene estos tipos de datos:

 strings- utilizado para representar datos de texto, el texto se da entre


comillas. p.ej. "A B C D"
 integer- utilizado para representar números enteros. p.ej. -1, -2, -3
 float- utilizado para representar números reales. p.ej. 1,2, 42,42
 boolean - utilizado para representar Verdadero o Falso.
 complex- utilizado para representar un número en un plano complejo. p.ej. 1.0 +
2.0j, 1.5 + 2.5j

Tipos de datos en NumPy


NumPy tiene algunos tipos de datos adicionales y se refieren a tipos de datos con un
carácter, como ipara enteros, upara enteros sin signo, etc.

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)

Comprobación del tipo de datos de una matriz


El objeto de matriz NumPy tiene una propiedad llamada dtype que devuelve el tipo de
datos de la matriz:
Ejemplo
Obtenga el tipo de datos de un objeto de matriz:

import numpy as np

arr = np.array([1, 2, 3, 4])

print(arr.dtype)

Inténtalo tú mismo "

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)

Inténtalo tú mismo "

Creación de matrices con un tipo de datos


definido
Usamos la array()función para crear matrices, esta función puede tomar un argumento
opcional: dtype que nos permite definir el tipo de datos esperado de los elementos de la
matriz:

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)

Inténtalo tú mismo "

Para i, u, f, Sy Upodemos definir el tamaño también.

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)

Inténtalo tú mismo "

¿Qué pasa si un valor no se puede convertir?


Si se da un tipo en el que los elementos no se pueden convertir, NumPy generará un
ValueError.

ValueError: en Python, ValueError se genera cuando el tipo de argumento pasado a una


función es inesperado / incorrecto.

Ejemplo
Una cadena no entera como 'a' no se puede convertir a entero (generará un error):

import numpy as np

arr = np.array(['a', '2', '3'], dtype='i')

Inténtalo tú mismo "

Conversión de tipos de datos en matrices


existentes
La mejor manera de cambiar el tipo de datos de una matriz existente es hacer una copia
de la matriz con el astype()método.

La astype()función crea una copia de la matriz y le permite especificar el tipo de datos


como parámetro.

El tipo de datos se puede especificar usando una cadena, como 'f'para float, 'i'para


integer, etc. o puede usar el tipo de datos directamente como floatpara float y intpara
integer.

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)

Inténtalo tú mismo "

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)

Inténtalo tú mismo "

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)

a diferencia entre copiar y ver


La principal diferencia entre una copia y una vista de una matriz es que la copia es una
nueva matriz y la vista es solo una vista de la matriz original.

La copia es propietaria de los datos y cualquier cambio realizado en la copia no afectará


la matriz original, y cualquier cambio realizado en la matriz original no afectará la copia.

La vista no es propietaria de los datos y cualquier cambio realizado en la vista afectará la


matriz original, y cualquier cambio realizado en la matriz original afectará la vista.
COPIAR:
Ejemplo
Haga una copia, cambie la matriz original y muestre ambas matrices:

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
arr[0] = 42

print(arr)
print(x)

Inténtalo tú mismo "

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)

Inténtalo tú mismo "

La vista DEBE verse afectada por los cambios realizados en la matriz original.

Realizar cambios en la VISTA:


Ejemplo
Cree una vista, cambie la vista y muestre ambas matrices:

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
x[0] = 31
print(arr)
print(x)

Inténtalo tú mismo "

La matriz original DEBERÍA verse afectada por los cambios realizados en la vista.

Compruebe si la matriz es propietaria de sus


datos
Como se mencionó anteriormente, las copias son propietarias de los datos y las vistas no
son propietarias de los datos, pero ¿cómo podemos verificar esto?

Cada matriz NumPy tiene el atributo baseque devuelveNone si la matriz posee los datos.

De lo contrario, el base  atributo se refiere al objeto original.

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)

Inténtalo tú mismo "

Vuelve la copia None.
La vista devuelve la matriz original.

Forma de una matriz


La forma de una matriz es el número de elementos en cada dimensión.

Obtenga la forma de una matriz


Las matrices NumPy tienen un atributo llamado shapeque devuelve una tupla con cada
índice que tiene el número de elementos correspondientes.
Ejemplo
Imprima la forma de una matriz 2-D:

import numpy as np

arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])

print(arr.shape)

Inténtalo tú mismo "

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

arr = np.array([1, 2, 3, 4], ndmin=5)

print(arr)
print('shape of array :', arr.shape)

Inténtalo tú mismo "

¿Qué representa la tupla de forma?


Los enteros en cada índice indican el número de elementos que tiene la dimensión
correspondiente.

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.

La forma de una matriz es el número de elementos en cada dimensión.

Al remodelar, podemos agregar o eliminar dimensiones o cambiar el número de


elementos en cada dimensión.

Reforma de 1-D a 2-D


Ejemplo
Convierta la siguiente matriz 1-D con 12 elementos en una matriz 2-D.

La dimensión más externa tendrá 4 matrices, cada una con 3 elementos:

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)

Inténtalo tú mismo "

Reforma de 1-D a 3-D


Ejemplo
Convierta la siguiente matriz 1-D con 12 elementos en una matriz 3-D.

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)

Inténtalo tú mismo "

¿Podemos reformarnos en cualquier forma?


Sí, siempre que los elementos necesarios para remodelar sean iguales en ambas formas.

Podemos remodelar una matriz 1D de 8 elementos en 4 elementos en una matriz 2D de 2


filas, pero no podemos remodelarla en una matriz 2D de 3 elementos y 3 filas, ya que
eso requeriría 3x3 = 9 elementos.

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)

Inténtalo tú mismo "

Devuelve Copiar o Ver?


Ejemplo
Compruebe si la matriz devuelta es una copia o una vista:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

print(arr.reshape(2, 4).base)

Inténtalo tú mismo "

El ejemplo anterior devuelve la matriz original, por lo que es una vista.

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.

Pase -1como valor y NumPy calculará este número por usted.

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])

newarr = arr.reshape(2, 2, -1)

print(newarr)
Inténtalo tú mismo "

Nota: No podemos pasar -1a más de una dimensión.

Aplanando las matrices


Aplastar una matriz significa convertir una matriz multidimensional en una matriz 1D.

Podemos utilizar reshape(-1)para hacer esto.

Ejemplo
Convierta la matriz en una matriz 1D:

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

newarr = arr.reshape(-1)

print(newarr)

Inténtalo tú mismo "

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 "

Iterando matrices 2-D


En una matriz 2-D, pasará por todas las filas.

Ejemplo
Itere en los elementos de la siguiente matriz 2-D:

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

for x in arr:
  print(x)

Inténtalo tú mismo "

Si iteramos en una matriz n- D, pasará por la n-1a dimensión una por una.

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

arr = np.array([[1, 2, 3], [4, 5, 6]])

for x in arr:
  for y in x:
    print(y)

Inténtalo tú mismo "

Iterando matrices 3-D


En una matriz 3-D, pasará por todas las matrices 2-D.

Ejemplo
Itere en los elementos de la siguiente matriz 3D:
import numpy as np

arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])

for x in arr:
  print(x)

Inténtalo tú mismo "

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

arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])

for x in arr:
  for y in x:
    for z in y:
      print(z)

Inténtalo tú mismo "

Iterando matrices usando nditer ()


La función nditer()es una función de ayuda que se puede utilizar desde iteraciones muy
básicas hasta muy avanzadas. Resuelve algunos problemas básicos que enfrentamos en
iteración, veamos con ejemplos.

Iterando en cada elemento escalar


En forbucles básicos , iterando a través de cada escalar de una matriz, necesitamos
usar n for bucles que pueden ser difíciles de escribir para matrices con una
dimensionalidad muy alta.

Ejemplo
Itere a través de la siguiente matriz 3-D:

import numpy as np

arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])

for x in np.nditer(arr):
  print(x)
Inténtalo tú mismo "

Iterando matriz con diferentes tipos de datos


Podemos usar el op_dtypesargumento y pasarle el tipo de datos esperado para cambiar el
tipo de datos de los elementos mientras iteramos.

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])

for x in np.nditer(arr, flags=['buffered'], op_dtypes=['S']):


  print(x)

Inténtalo tú mismo "

Iterando con diferente tamaño de paso


Podemos usar filtrado y seguido de iteración.

Ejemplo
Itere a través de cada elemento escalar de la matriz 2D omitiendo 1 elemento:

import numpy as np

arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])

for x in np.nditer(arr[:, ::2]):
  print(x)

Inténtalo tú mismo "

Iteración enumerada con ndenumerate ()


La enumeración significa mencionar el número de secuencia de algunas cosas una por
una.

A veces requerimos el índice correspondiente del elemento mientras iteramos,


el ndenumerate()método se puede usar para esos casos de uso.

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)

Inténtalo tú mismo "

Ejemplo
Enumere los siguientes elementos de la matriz 2D:

import numpy as np

arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])

for idx, x in np.ndenumerate(arr):
  print(idx, x)

Unirse a matrices NumPy


Unirse significa poner el contenido de dos o más arreglos en un solo arreglo.

En SQL unimos tablas en función de una clave, mientras que en NumPy unimos matrices
por ejes.

Pasamos una secuencia de matrices que queremos unir a la concatenate()función, junto


con el eje. Si el eje no se pasa explícitamente, se toma como 0.

Ejemplo
Unir dos matrices

import numpy as np

arr1 = np.array([1, 2, 3])

arr2 = np.array([4, 5, 6])

arr = np.concatenate((arr1, arr2))


print(arr)

Inténtalo tú mismo "

Ejemplo
Une dos matrices 2-D a lo largo de filas (eje = 1):

import numpy as np

arr1 = np.array([[1, 2], [3, 4]])

arr2 = np.array([[5, 6], [7, 8]])

arr = np.concatenate((arr1, arr2), axis=1)

print(arr)

Inténtalo tú mismo "

Unir matrices mediante funciones de pila


El apilamiento es igual que la concatenación, la única diferencia es que el apilamiento se
realiza a lo largo de un nuevo eje.

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.

Pasamos una secuencia de matrices que queremos unir al concatenate()método junto


con el eje. Si el eje no se pasa explícitamente, se toma como 0.

Ejemplo
import numpy as np

arr1 = np.array([1, 2, 3])

arr2 = np.array([4, 5, 6])

arr = np.stack((arr1, arr2), axis=1)

print(arr)

Inténtalo tú mismo "

Apilamiento a lo largo de filas


NumPy proporciona una función auxiliar: hstack() apilar a lo largo de filas.

Ejemplo
import numpy as np

arr1 = np.array([1, 2, 3])

arr2 = np.array([4, 5, 6])

arr = np.hstack((arr1, arr2))

print(arr)

Inténtalo tú mismo "

Apilamiento a lo largo de columnas


NumPy proporciona una función auxiliar: vstack()  apilar a lo largo de columnas.

Ejemplo
import numpy as np

arr1 = np.array([1, 2, 3])

arr2 = np.array([4, 5, 6])

arr = np.vstack((arr1, arr2))

print(arr)

Inténtalo tú mismo "

Apilamiento a lo largo de la altura (profundidad)


NumPy proporciona una función auxiliar: dstack() apilar a lo largo de la altura, que es lo
mismo que la profundidad.

Ejemplo
import numpy as np

arr1 = np.array([1, 2, 3])

arr2 = np.array([4, 5, 6])
arr = np.dstack((arr1, arr2))

print(arr)

División de matrices NumPy


La división es una operación inversa de la unión.

La unión fusiona varias matrices en una y la división divide una matriz en múltiples.

Usamos array_split()para dividir matrices, le pasamos la matriz que queremos dividir y


el número de divisiones.

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)

Inténtalo tú mismo "

Nota: El valor de retorno es una matriz que contiene tres matrices.

Si la matriz tiene menos elementos de los necesarios, se ajustará desde el final en


consecuencia.

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)

Inténtalo tú mismo "

Nota: También tenemos el método split()disponible, pero no ajustará los elementos


cuando los elementos estén menos en la matriz de origen para dividirlos como en el
ejemplo anterior, array_split()funcionó correctamente pero split()fallaría.
Dividir en matrices
El valor de retorno del array_split()método es una matriz que contiene cada una de las
divisiones como una matriz.

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])

Inténtalo tú mismo "

División de matrices 2-D


Utilice la misma sintaxis al dividir matrices 2-D.

Use el array_split()método, pase la matriz que desea dividir y el número de divisiones


que desea hacer.

Ejemplo
Divida la matriz 2-D en tres matrices 2-D.

import numpy as np

arr = np.array([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10], [11, 12]])

newarr = np.array_split(arr, 3)

print(newarr)

Inténtalo tú mismo "

El ejemplo anterior devuelve tres matrices 2-D.

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

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15],


[16, 17, 18]])

newarr = np.array_split(arr, 3)

print(newarr)

Inténtalo tú mismo "

El ejemplo anterior devuelve tres matrices 2-D.

Además, puede especificar en qué eje desea realizar la división.

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

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15],


[16, 17, 18]])

newarr = np.array_split(arr, 3, axis=1)

print(newarr)

Inténtalo tú mismo "

Una solución alternativa está usando lo hsplit()contrario de hstack()

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

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15],


[16, 17, 18]])

newarr = np.hsplit(arr, 3)

print(newarr)
Inténtalo tú mismo "

Nota: alternativas similares a vstack()y dstack()están disponibles


como vsplit()y dsplit().

Buscando matrices
Puede buscar en una matriz un valor determinado y devolver los índices que coinciden.

Para buscar una matriz, use el where()método.

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)

Inténtalo tú mismo "

El ejemplo anterior devolverá una tupla: (array([3, 5, 6],)

Lo que significa que el valor 4 está presente en los índices 3, 5 y 6.

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)

Inténtalo tú mismo "

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)

Inténtalo tú mismo "

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.

Se searchsorted()supone que el método se utiliza en matrices ordenadas.

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)

Inténtalo tú mismo "

Ejemplo explicado: El número 7 debe insertarse en el índice 1 para seguir siendo el orden
de clasificación.

El método inicia la búsqueda desde la izquierda y devuelve el primer índice donde el


número 7 ya no es mayor que el siguiente valor.

Buscar desde el lado derecho


De forma predeterminada, se devuelve el índice más a la izquierda, pero
podemos side='right'devolver el índice más a la derecha en su lugar.

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.

El método comienza la búsqueda desde la derecha y devuelve el primer índice donde el


número 7 ya no es menor que el siguiente valor.

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)

Inténtalo tú mismo "

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 .

Secuencia ordenada es cualquier secuencia que tiene un orden correspondiente a


elementos, como numérico o alfabético, ascendente o descendente.

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))

Inténtalo tú mismo "

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))

Inténtalo tú mismo "

Ejemplo
Ordene una matriz booleana:

import numpy as np

arr = np.array([True, False, True])

print(np.sort(arr))

Inténtalo tú mismo "

Ordenar una matriz 2-D


Si usa el método sort () en una matriz 2-D, ambas matrices se ordenarán:

Ejemplo
Ordene una matriz 2-D:

import numpy as np

arr = np.array([[3, 2, 4], [5, 0, 1]])

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 .

En NumPy, filtra una matriz utilizando una lista de índice booleano .

Una lista de índices booleanos es una lista de valores booleanos correspondientes a los


índices de la matriz.
Si el valor de un índice es Trueque el elemento está contenido en la matriz filtrada, si el
valor de ese índice es, Falseese elemento se excluye de la matriz filtrada.

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])

x = [True, False, True, False]

newarr = arr[x]

print(newarr)

Inténtalo tú mismo "

El ejemplo anterior volverá [41, 43], ¿por qué?

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.

Creación de la matriz de filtros


En el ejemplo anterior codificamos los valores True y False, pero el uso común es crear
una matriz de filtros basada en las condiciones.

Ejemplo
Cree una matriz de filtros que devuelva solo valores superiores a 42:

import numpy as np

arr = np.array([41, 42, 43, 44])

# Create an empty list


filter_arr = []

# go through each element in arr


for element in arr:
  # if the element is higher than 42, set the value to True, otherwise False:
  if element > 42:
    filter_arr.append(True)
  else:
    filter_arr.append(False)

newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

Inténtalo tú mismo "

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])

# Create an empty list


filter_arr = []

# go through each element in arr


for element in arr:
  # if the element is completely divisble by 2, set the value to True, otherwise
False
  if element % 2 == 0:
    filter_arr.append(True)
  else:
    filter_arr.append(False)

newarr = arr[filter_arr]

print(filter_arr)
print(newarr)

Inténtalo tú mismo "

Creación de filtros directamente desde la matriz


El ejemplo anterior es una tarea bastante común en NumPy y NumPy proporciona una
buena manera de abordarlo.

Podemos sustituir directamente la matriz en lugar de la variable iterable en nuestra


condición y funcionará tal como lo esperamos.

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)

Inténtalo tú mismo "

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)

Números aleatorios en NumPy


¿Qué es un número aleatorio?
Número aleatorio NO significa un número diferente cada vez. Aleatorio significa algo que
no se puede predecir lógicamente.

Pseudo aleatorio y verdadero aleatorio.


Las computadoras trabajan en programas y los programas son un conjunto definitivo de
instrucciones. Entonces significa que también debe haber algún algoritmo para generar
un número aleatorio.

Si hay un programa para generar un número aleatorio, se puede predecir, por lo que no
es realmente aleatorio.

Los números aleatorios generados mediante un algoritmo de generación se


denominan pseudoaleatorios .

¿Podemos hacer números verdaderamente aleatorios?

Si. Para generar un número verdaderamente aleatorio en nuestras computadoras,


necesitamos obtener los datos aleatorios de alguna fuente externa. Esta fuente externa
son generalmente nuestras pulsaciones de teclas, movimientos del mouse, datos en la
red, etc.
No necesitamos números verdaderamente aleatorios, a menos que esté relacionado con
la seguridad (por ejemplo, claves de cifrado) o la base de la aplicación sea la aleatoriedad
(por ejemplo, ruedas de ruleta digital).

En este tutorial usaremos números pseudoaleatorios.

Generar número aleatorio


NumPy ofrece el randommódulo para trabajar con números aleatorios.

Ejemplo
Genere un número entero aleatorio de 0 a 100:

from numpy import random

x = random.randint(100)

print(x)

Inténtalo tú mismo "

Generar flotación aleatoria


El rand()método del módulo aleatorio devuelve un flotante aleatorio entre 0 y 1.

Ejemplo
Genere un flotador aleatorio de 0 a 1:

from numpy import random

x = random.rand()

print(x)

Inténtalo tú mismo "

Generar matriz aleatoria


En NumPy trabajamos con matrices, y puede usar los dos métodos de los ejemplos
anteriores para hacer matrices aleatorias.
Enteros
El randint()método toma un size parámetro en el que puede especificar la forma de una
matriz.

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)

Inténtalo tú mismo "

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)

Inténtalo tú mismo "

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)

Inténtalo tú mismo "

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)

Inténtalo tú mismo "

Generar un número aleatorio a partir de una


matriz
El choice()método le permite generar un valor aleatorio basado en una matriz de valores.

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)

Inténtalo tú mismo "

El choice()método también le permite devolver una matriz de valores.

Agregue un sizeparámetro para especificar la forma de la matriz.

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 de datos


Qué es la distribución de datos?
La distribución de datos es una lista de todos los valores posibles y la frecuencia con la
que se produce cada valor.
Estas listas son importantes cuando se trabaja con estadísticas y ciencia de datos.

El módulo aleatorio ofrece métodos que devuelven distribuciones de datos generadas


aleatoriamente.

Distribución aleatoria
Una distribución aleatoria es un conjunto de números aleatorios que siguen una
determinada función de densidad de probabilidad .

Función de densidad de probabilidad: función que describe una probabilidad


continua. es decir, probabilidad de todos los valores de una matriz.

Podemos generar números aleatorios basados en probabilidades definidas usando


el choice()método del randommódulo.

El choice()método nos permite especificar la probabilidad de cada valor.

La probabilidad se establece mediante un número entre 0 y 1, donde 0 significa que el


valor nunca ocurrirá y 1 significa que el valor siempre ocurrirá.

Ejemplo
Genere una matriz 1-D que contenga 100 valores, donde cada valor debe ser 3, 5, 7 o 9.

La probabilidad de que el valor sea 3 se establece en 0,1

La probabilidad de que el valor sea 5 se establece en 0,3

La probabilidad de que el valor sea 7 se establece en 0,6

La probabilidad de que el valor sea 9 se establece en 0

from numpy import random

x = random.choice([3, 5, 7, 9], p=[0.1, 0.3, 0.6, 0.0], size=(100))

print(x)

Inténtalo tú mismo "

La suma de todos los números de probabilidad debe ser 1.

Incluso si ejecuta el ejemplo anterior 100 veces, el valor 9 nunca aparecerá.

Puede devolver matrices de cualquier forma y tamaño especificando la forma en


el sizeparámetro.

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

x = random.choice([3, 5, 7, 9], p=[0.1, 0.3, 0.6, 0.0], size=(3, 5))

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.

El módulo NumPy Random proporciona dos métodos para


esto: shuffle()y permutation().

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)

Inténtalo tú mismo "

El shuffle()método realiza cambios en la matriz original.

Generación de permutación de matrices


Ejemplo
Genere una permutación aleatoria de elementos de la siguiente matriz:

from numpy import random
import numpy as np

arr = np.array([1, 2, 3, 4, 5])

print(random.permutation(arr))

Inténtalo tú mismo "

El permutation()método devuelve una matriz reorganizada (y deja la matriz original sin


cambios).

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

Si usa Jupyter, instale Seaborn usando 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

Trazar una trama


Ejemplo
import matplotlib.pyplot as plt
import seaborn as sns

sns.distplot([0, 1, 2, 3, 4, 5])

plt.show()

Inténtalo tú mismo "


Trazar una gráfica de distribución sin el
histograma
Ejemplo
import matplotlib.pyplot as plt
import seaborn as sns

sns.distplot([0, 1, 2, 3, 4, 5], hist=False)

plt.show()

Inténtalo tú mismo "

Nota: Usaremos: sns.distplot(arr, hist=False)para visualizar distribuciones aleatorias en


este tutorial

Distribución normal (gaussiana)


Distribución normal
La distribución normal es una de las distribuciones más importantes.

También se le llama Distribución Gaussiana en honor al matemático alemán Carl Friedrich


Gauss.

Se ajusta a la distribución de probabilidad de muchos eventos, ej. Puntuaciones de


coeficiente intelectual, latidos del corazón, etc.

Utilice el random.normal()método para obtener una distribución de datos normal.

Tiene tres parámetros:

loc - (Media) donde existe el pico de la campana.

scale - (Desviación estándar) qué tan plana debe ser la distribución del gráfico.

size - La forma de la matriz devuelta.

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

x = random.normal(loc=1, scale=2, size=(2, 3))

print(x)

Inténtalo tú mismo "

Visualización de distribución normal


Ejemplo
from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

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 .

Describe el resultado de escenarios binarios, por ejemplo, lanzamiento de una moneda,


será cara o cruz.

Tiene tres parámetros:

n - número de intentos.

p - probabilidad de ocurrencia de cada prueba (por ejemplo, para el lanzamiento de una
moneda de 0,5 cada una).

size - La forma de la matriz devuelta.

Distribución discreta: la distribución se define en un conjunto separado de eventos, por


ejemplo, el resultado de un lanzamiento de moneda es discreto ya que solo puede ser
cara o cruz, mientras que la altura de las personas es continua, ya que puede ser 170,
170,1, 170,11 y así sucesivamente.

Ejemplo
Dados 10 intentos de lanzamiento de moneda, genera 10 puntos de datos:

from numpy import random

x = random.binomial(n=10, p=0.5, size=10)

print(x)

Inténtalo tú mismo "

Visualización de distribución binomial


Ejemplo
from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

sns.distplot(random.binomial(n=10, p=0.5, size=1000), hist=True, kde=False)

plt.show()

Resultado
Inténtalo tú mismo "

Diferencia entre distribución normal y binomial


La principal diferencia es que la distribución normal es continua mientras que binomial es
discreta, pero si hay suficientes puntos de datos, será bastante similar a la distribución
normal con cierta locomotora y escala.

Ejemplo
from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

sns.distplot(random.normal(loc=50, scale=5, size=1000),


hist=False, label='normal')
sns.distplot(random.binomial(n=100, p=0.5, size=1000),
hist=False, label='binomial')

plt.show()

Resultado
Distribución de Poisson
La distribución de Poisson es una distribución discreta .

Calcula cuántas veces puede ocurrir un evento en un tiempo específico. Por ejemplo, si


alguien come dos veces al día, ¿cuál es la probabilidad de que coma tres veces?

Tiene dos parámetros:

lam - tasa o número conocido de apariciones, por ejemplo, 2 para el problema anterior.

size - La forma de la matriz devuelta.

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)

Inténtalo tú mismo "


Visualización de la distribución de Poisson
Ejemplo
from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

sns.distplot(random.poisson(lam=2, size=1000), kde=False)

plt.show()

Resultado

Inténtalo tú mismo "

Diferencia entre distribución normal y de Poisson


La distribución normal es continua mientras que Poisson es discreta.
Pero podemos ver que similar a binomial para una distribución de Poisson lo
suficientemente grande, se volverá similar a la distribución normal con cierto desarrollo
estándar y media.

Ejemplo
from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

sns.distplot(random.normal(loc=50, scale=7, size=1000),


hist=False, label='normal')
sns.distplot(random.poisson(lam=50, size=1000), hist=False, label='poisson')

plt.show()

Resultado

Inténtalo tú mismo "

Diferencia entre Poisson y distribución binomial


La diferencia es muy sutil, es que la distribución binomial es para ensayos discretos,
mientras que la distribución de Poisson es para ensayos continuos.
Pero para una distribución binomial muy grande ny cercana a cero pes casi idéntica a la
distribución de Poisson tal que n * pes casi igual a lam.

Ejemplo
from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

sns.distplot(random.binomial(n=1000, p=0.01, size=1000),


hist=False, label='binomial')
sns.distplot(random.poisson(lam=10, size=1000), hist=False, label='poisson')

plt.show()

Resultado

Distribución uniforme
Se usa para describir la probabilidad donde cada evento tiene las mismas posibilidades de
ocurrir.

Ej. Generación de números aleatorios.

Tiene tres parámetros:


a - límite inferior - predeterminado 0 .0.

b - límite superior - predeterminado 1.0.

size - La forma de la matriz devuelta.

Ejemplo
Cree una muestra de distribución uniforme 2x3:

from numpy import random

x = random.uniform(size=(2, 3))

print(x)

Inténtalo tú mismo "

Visualización de distribución uniforme


Ejemplo
from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

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.

Se utiliza ampliamente en aprendizaje automático en regresión logística, redes


neuronales, etc.

Tiene tres parámetros:

loc- es decir, donde está el pico. Por defecto 0.

scale- desviación estándar, la planitud de la distribución. Predeterminado 1.

size - La forma de la matriz devuelta.

Ejemplo
Extraiga muestras de 2x3 de una distribución logística con media en 1 y stddev 2.0:

from numpy import random

x = random.logistic(loc=1, scale=2, size=(2, 3))

print(x)

Inténtalo tú mismo "


Visualización de distribución logística
Ejemplo
from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

sns.distplot(random.logistic(size=1000), hist=False)

plt.show()

Resultado

Inténtalo tú mismo "

Diferencia entre distribución logística y normal


Ambas distribuciones son casi idénticas, pero la distribución logística tiene más área
debajo de las colas. es decir. Representa más posibilidad de ocurrencia de eventos más
alejados de la media.
Para un valor de escala más alto (desviación estándar), las distribuciones normal y
logística son casi idénticas aparte del pico.

Ejemplo
from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

sns.distplot(random.normal(scale=2, size=1000), hist=False, label='normal')


sns.distplot(random.logistic(size=1000), hist=False, label='logistic')

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.

Tiene tres parámetros:


n - número de resultados posibles (por ejemplo, 6 para 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).

size - La forma de la matriz devuelta.

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)

Inténtalo tú mismo "

Nota: ¡Las muestras multinomiales NO producirán un solo valor! Producirán un valor


para cada uno pval.

Nota: Como son generalizaciones de la distribución binomial, su representación visual y


la similitud de la distribución normal es la misma que la de las distribuciones binomiales
múltiples.

Distribución exponencial
La distribución exponencial se utiliza para describir el tiempo hasta el próximo evento,
por ejemplo, fracaso / éxito, etc.

Tiene dos parámetros:

scale - inversa de la tasa (ver lam en la distribución de Poisson) por defecto es 1.0.

size - La forma de la matriz devuelta.

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)

Inténtalo tú mismo "


Visualización de distribución exponencial
Ejemplo
from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

sns.distplot(random.exponential(size=1000), hist=False)

plt.show()

Resultado

Inténtalo tú mismo "

Relación entre Poisson y distribución exponencial


La distribución de Poisson se ocupa del número de ocurrencias de un evento en un
período de tiempo, mientras que la distribución exponencial se ocupa del tiempo entre
estos eventos.
Distribución de Chi cuadrado
Distribución de Chi cuadrado
La distribución de Chi cuadrado se utiliza como base para verificar la hipótesis.

Tiene dos parámetros:

df - (grado de libertad).

size - La forma de la matriz devuelta.

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)

Inténtalo tú mismo "

Visualización de la distribución de chi cuadrado


Ejemplo
from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

sns.distplot(random.chisquare(df=1, size=1000), hist=False)

plt.show()

Resultado
Distribución de Rayleigh
La distribución de Rayleigh se utiliza en el procesamiento de señales.

Tiene dos parámetros:

scale - (desviación estándar) decide qué tan plana será la distribución por defecto 1.0).

size - La forma de la matriz devuelta.

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)

Inténtalo tú mismo "


Visualización de la distribución de Rayleigh
Ejemplo
from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

sns.distplot(random.rayleigh(size=1000), hist=False)

plt.show()

Resultado

Inténtalo tú mismo "

Similitud entre la distribución de Rayleigh y Chi


cuadrado
En la unidad stddev, y 2 grados de libertad, rayleigh y chi cuadrado representan las
mismas distribuciones.
Distribución de Pareto
Una distribución que sigue la ley de Pareto, es decir, una distribución 80-20 (el 20% de
los factores provocan un resultado del 80%).

Tiene dos parámetros:

a - parámetro de forma.

size - La forma de la matriz devuelta.

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)

Inténtalo tú mismo "

Visualización de la distribución de Pareto


Ejemplo
from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

sns.distplot(random.pareto(a=2, size=1000), kde=False)

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.

Tiene dos parámetros:

a - parámetro de distribución.

size - La forma de la matriz devuelta.

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 "

Visualización de la distribución de Zipf


Muestre 1000 puntos, pero grafique solo aquellos con valor <10 para obtener un gráfico
más significativo.

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.

¿Por qué utilizar ufuncs?


Los ufuncs se utilizan para implementar la vectorización en NumPy, que es mucho más
rápido que iterar sobre elementos.

También brindan transmisión y métodos adicionales como reducir, acumular, etc. que son
muy útiles para el cálculo.

ufuncs también toma argumentos adicionales, como:

where Matriz booleana o condición que define dónde deben tener lugar las operaciones.

dtype definir el tipo de retorno de los elementos.

out matriz de salida donde se debe copiar el valor de retorno.

¿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.

Agregar los elementos de dos listas


lista 1: [1, 2, 3, 4]

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)

Inténtalo tú mismo "

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)

Crea tu propia ufunc


Para crear su propio ufunc, debe definir una función, como lo hace con las funciones
normales en Python, luego agregarla a su biblioteca ufunc de NumPy con
el frompyfunc()método.

El frompyfunc()método toma los siguientes argumentos:

1. function - El nombre de la función.


2. inputs - el número de argumentos de entrada (matrices).
3. outputs - el número de matrices de salida.

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 "

Comprueba si una función es ufunc


Verifique el tipo de función para verificar si es ufunc o no.

Un ufunc debería regresar <class 'numpy.ufunc'>.

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 "

Si la función no se reconoce en absoluto, devolverá un error:

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 "

Para probar si la función es ufunc en una instrucción if, use el numpy.ufuncvalor


(o np.ufuncsi usa np como un alias para numpy):

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 .

Aritmética condicionalmente: significa que podemos definir las condiciones donde


debe ocurrir la operación aritmética.

Todas las funciones aritméticas discutidas toman un whereparámetro en el que podemos


especificar esa condición.

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])

newarr = np.add(arr1, arr2)

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])

newarr = np.subtract(arr1, arr2)

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])

newarr = np.multiply(arr1, arr2)

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])

newarr = np.power(arr1, arr2)

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])

newarr = np.mod(arr1, arr2)


print(newarr)
Inténtalo tú mismo "
El ejemplo anterior devolverá [1 6 3 0 0 27] que es el resto cuando divide 10 con 3 (10%
3), 20 con 7 (20% 7) 30 con 9 (30% 9), etc.

Obtienes el mismo resultado cuando usas la remainder()función:

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])

newarr = np.remainder(arr1, arr2)

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])

newarr = np.divmod(arr1, arr2)

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

arr = np.array([-1, -2, 1, 2, 3, -4])

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)

Inténtalo tú mismo "


Ejemplo
Mismo ejemplo, usando fix():

import numpy as np

arr = np.fix([-3.1666, 3.6667])

print(arr)

Inténtalo tú mismo "

Redondeo
La around()función incrementa el dígito o decimal anterior en 1 si> = 5; de lo contrario,
no hace nada.

Por ejemplo, redondee a 1 punto decimal, 3,16666 es 3,2

Ejemplo
Redondee 3,1666 a 2 decimales:

import numpy as np

arr = np.around(3.1666, 2)

print(arr)

Inténtalo tú mismo "

Piso
La función floor () redondea el decimal al entero inferior más cercano.

Por ejemplo, el piso de 3.166 es 3.

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 "

Nota: La floor()función devuelve flotantes, a diferencia de la trunc()función que


devuelve enteros.

Fortificar techo
La función ceil () redondea el decimal al entero superior más cercano.

Por ejemplo, el techo de 3,166 es 4.

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.

Iniciar sesión en Base 2


Utilice la log2()función para realizar el registro en la base 2.

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).

Iniciar sesión en Base 10


Utilice la log10()función para realizar el registro en la base 10.

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 "

Registro natural o registro en la base e


Utilice la log()función para realizar el registro en la base e.

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 "

Iniciar sesión en cualquier base


NumPy no proporciona ninguna función para tomar el registro en cualquier base, por lo
que podemos usar la frompyfunc()función junto con la función
incorporada math.log()con dos parámetros de entrada y un parámetro de salida:

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])

newarr = np.add(arr1, arr2)

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])

newarr = np.sum([arr1, arr2])

print(newarr)
Inténtalo tú mismo "
Devoluciones: 12

Suma sobre un eje


Si especifica axis=1, NumPy sumará los números en cada matriz.

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])

newarr = np.sum([arr1, arr2], axis=1)

print(newarr)
Inténtalo tú mismo "
Devoluciones: [6 6]

Suma acumulativa
Suma acumulativa significa agregar parcialmente los elementos en una matriz.

Por ejemplo, la suma parcial de [1, 2, 3, 4] sería [1, 1 + 2, 1 + 2 + 3, 1 + 2 + 3 + 4] =


[1, 3, 6, 10].

Realice una suma parcial con la cumsum()función.

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

Producto sobre un eje


Si lo especifica axis=1, NumPy devolverá el producto de cada matriz.

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])

newarr = np.prod([arr1, arr2], axis=1)

print(newarr)
Inténtalo tú mismo "
Devoluciones: [24 1680]

Producto acumulativo
Producto acumulativo significa tomar el producto parcialmente.

Por ejemplo, el producto parcial de [1, 2, 3, 4] es [1, 1 * 2, 1 * 2 * 3, 1 * 2 * 3 * 4] =


[1, 2, 6, 24]
Realice una suma parcial con la cumprod()función.

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 ❯

Una diferencia discreta significa restar dos elementos sucesivos.

Por ejemplo, para [1, 2, 3, 4], la diferencia discreta sería [2-1, 3-2, 4-3] = [1, 1, 1]

Para encontrar la diferencia discreta, use la diff()función.

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

Podemos realizar esta operación repetidamente dando parámetro n.

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])

newarr = np.diff(arr, n=2)

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

NumPy LCM Mínimo común


múltiplo
El mínimo común múltiplo es el menor número que es común múltiplo de ambos
números.

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).

Encontrar LCM en matrices


Para encontrar el múltiplo común más bajo de todos los valores en una matriz, puede
usar el reduce()método.

El reduce()método usará ufunc, en este caso la lcm()función, en cada elemento y reducirá


la matriz en una dimensión.

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)

Máximo común denominador de


NumPy GCD
El MCD (mayor común denominador), también conocido como HCF (mayor factor común)
es el número más grande que es un factor común de ambos números.

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.

El reduce()método usará ufunc, en este caso la gcd()función, en cada elemento y reducirá


la matriz en una dimensión.

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

arr = np.array([np.pi/2, np.pi/3, np.pi/4, np.pi/5])

x = np.sin(arr)
print(x)
Inténtalo tú mismo "

Convertir grados en radianes


Por defecto, todas las funciones trigonométricas toman radianes como parámetros pero
podemos convertir radianes a grados y viceversa también en NumP.

Nota: los valores en radianes son pi / 180 * grados_valores.

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

arr = np.array([np.pi/2, np.pi, 1.5*np.pi, 2*np.pi])

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 "

Ángulos de cada valor en matrices


Ejemplo
Encuentre el ángulo para todos los valores de seno en la matriz

import numpy as np

arr = np.array([1, -1, 0.1])

x = np.arcsin(arr)

print(x)
Inténtalo tú mismo "

Hipotenues
Encontrar hipotenues usando el teorema de Pitágoras en NumPy.

NumPy proporciona la hypot()función que toma los valores base y perpendiculares y


produce hipotenues basados en el teorema de Pitágoras.

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)

Funciones hiperbólicas NumPy


Funciones hiperbólicas
NumPy ofrece los ufuncs sinh(), cosh()y tanh()que toman valores en radianes y
producir los correspondientes valores sinh, cosh y TANH ..

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

arr = np.array([np.pi/2, np.pi/3, np.pi/4, np.pi/5])

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).

Numpy proporciona ufuncs arcsinh(), arccosh()y arctanh()eso produce valores en


radianes para los valores correspondientes sinh, cosh y tanh dados.

Ejemplo
Encuentra el ángulo de 1.0:

import numpy as np
x = np.arcsinh(1.0)

print(x)
Inténtalo tú mismo "

Ángulos de cada valor en matrices


Ejemplo
Encuentre el ángulo para todos los valores de tanh en la matriz:

import numpy as np

arr = np.array([0.1, 0.2, 0.5])

x = np.arctanh(arr)

print(x)

Operaciones de NumPy Set


Un conjunto de matemáticas es una colección de elementos únicos.

Los conjuntos se utilizan para operaciones que implican operaciones frecuentes de


intersección, unión y diferencia.

Crear conjuntos en NumPy


Podemos usar el unique()método de NumPy para encontrar elementos únicos de
cualquier arreglo. Por ejemplo, cree una matriz de conjuntos, pero recuerde que las
matrices de conjuntos solo deben ser matrices 1-D.

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])

newarr = np.union1d(arr1, arr2)

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])

newarr = np.intersect1d(arr1, arr2, assume_unique=True)

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])

newarr = np.setdiff1d(set1, set2, assume_unique=True)

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.

Encontrar la diferencia simétrica


Para encontrar solo los valores que NO están presentes en AMBOS conjuntos, use
el setxor1d()método.

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])

newarr = np.setxor1d(set1, set2, assume_unique=True)

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.

También podría gustarte