Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Funciones principales de NumPy

7/24
Recursos

Aportes 12

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

🧮Funciones principales de NumPy


arr = np.random.randint(1, 20, 10)
matriz = arr.reshape(2,5)
matriz
----> array([[18,  8,  3, 11,  1],
       [15, 10, 13,  9, 15]])
arr
----> array([18,  8,  3, 11,  1, 15, 10, 13,  9, 15])
arr.max() ----> 18
matriz.max() ----> 18

Podemos regresar los máximos de cada fila o columna especificando el eje.

matriz.max(1) ----> array([18, 15])
matriz.max(0) ---->array([18, 10, 13, 11, 15])

Tambien tenemos .argmax() que nos devuelve la posición del elemento

arr.argmax() ----> 0
matriz.argmax(0) ----> array([0, 1, 1, 0, 1])

De forma análoga tenemos .min()

arr.min() ----> 1
arr.argmin() ----> 4
matriz.min(0) ----> array([15,  8,  3,  9,  1])
matriz.argmin(1) ----> array([4, 3])

Podemos saber la diferencia de valor más bajo con el más alto.

arr.ptp() # 18 - 1 ----> 17
matriz.ptp(0)  ----> array([ 3,  2, 10,  2, 14])

Para hacer análisis estádistico se tienen la siguientes funciones.

Ordenar los elementos:
arr.sort() ----> array([1, 3, 8, 9,10, 11,13, 15,15,18])

Obtener un percentil:

np.percentile(arr, 0) ----> 1.0

Mediana:

np.median(arr) ----> 10.5

Desviación estándar:

np.std(arr) ----> 5.080354

Varianza:

np.var(arr) ----> 25.81000

Promedio

np.mean(arr) ----> 10.3

Lo mismo aplica para las matrices.

np.median(matriz, 1) ----> array([ 8., 15.])

Se pueden unir dos arrays por medio de la concatenación

a = np.array([[1,2], [3,4]])
b= np.array([5, 6])
np.concatenate((a,b), axis = 0)
----------------------------------------------------
ValueError                  Traceback (most recent call last)
<ipython-input-213-97c6fb2c6837> in <module>()
----> 1 np.concatenate((a,b), axis = 0)

<__array_function__ internals> in concatenate(*args, **kwargs)

ValueError: all the input arrays must have same number of dimensions, but the array at index 0 has 2 dimension(s) and the array at index 1 has 1 dimension(s)

El error anterior es debido a a tiene 2 dimensiones mientras que b tiene 1.

print(a.ndim) ----> 2
b.ndim ----> 1
b = np.expand_dims(b, axis = 0)
np.concatenate((a,b), axis = 0)
----> array([[1, 2],
       [3, 4],
       [5, 6]])

De igual forma podemos agregarlo en el otro eje

np.concatenate((a,b), axis = 1)
-----------------------------------------------
ValueError               Traceback (most recent call last)
<ipython-input-217-3ae7237876ab> in <module>()
      1 # De igual forma podemos agregarlo en el otro eje
----> 2 np.concatenate((a,b), axis = 1)

<__array_function__ internals> in concatenate(*args, **kwargs)

ValueError: all the input array dimensions for the concatenation axis must match exactly, but along dimension 0, the array at index 0 has size 2 and the array at index 1 has size 1

Como b es una fila y no una columna, no se puede concatenar a menos que se aplique la transpuesta.

np.concatenate((a,b.T), axis = 1)
----> array([[1, 2, 5],
       [3, 4, 6]])

Concatenación por columnas

Concatenación por filas

b está con corchetes por que debe tener la misma dimensión que a

Para calcular los percentiles hay que tener los valores ordenados

  • Para obtener la frecuencia de los valores de un array tenemos:
arr ----> array([ 3,  5,  7,  7,  8,  8, 11, 16, 16, 17])
np.bincount(arr)
----->  array([0, 0, 0, 1, 0, 1, 0, 2, 2, 0, 0, 1, 0, 0, 0, 0, 2, 1])
  • Para calcular el promedio ponderado de un array tenemos
np.average(arr)
-----> 9.8
  • Lo anterior tambien aplica para matrices

Exponents and logarithms

exp(x, /[, out, where, casting, order, …])

Calculate the exponential of all elements in the input array.

expm1(x, /[, out, where, casting, order, …])

Calculate exp(x) - 1 for all elements in the array.

exp2(x, /[, out, where, casting, order, …])

Calculate 2**p for all p in the input array.

log(x, /[, out, where, casting, order, …])

Natural logarithm, element-wise.

log10(x, /[, out, where, casting, order, …])

Return the base 10 logarithm of the input array, element-wise.

log2(x, /[, out, where, casting, order, …])

Base-2 logarithm of x.

log1p(x, /[, out, where, casting, order, …])

Return the natural logarithm of one plus the input array, element-wise.

logaddexp(x1, x2, /[, out, where, casting, …])

Logarithm of the sum of exponentiations of the inputs.

logaddexp2(x1, x2, /[, out, where, casting, …])

Logarithm of the sum of exponentiations of the inputs in base-2.

Con el prefijo NAN a las funciones mediana, media, desvío estándar y varianza tenemos las mismas funciones pero además manejan los nulos.
Útiles para trabajar con dataset faltantes de datos.
Tenemos la matriz 3x3x3 con tipo de dato punto flotante (np.nan es para float).

mtrz_3x3x3 =np.array([[[1,2,3], [4,5,6], [7,8,9]],[[11,12,13], [14,15,16],[17,18,19]],[[21,22,23], [24,25,26],[27,28,29]]], dtype='float64')
# agregamos un SOLO valor en la matriz de 27 elementos
mtrz_3x3x3[0, 1, 2] = np.nan
mtrz_3x3x3

array([[[ 1., 2., 3.],
[ 4., 5., nan],
[ 7., 8., 9.]],
[[11., 12., 13.],
[14., 15., 16.],
[17., 18., 19.]],
[[21., 22., 23.],
[24., 25., 26.],
[27., 28., 29.]]])

Calculamos la media (mean vs nanmean).

np.mean(mtrz_3x3x3),np.nanmean(mtrz_3x3x3)

(nan, 15.346153846153847)

Calculamos la mediana (median vs nanmedian).

np.median(mtrz_3x3x3),np.nanmedian(mtrz_3x3x3)

(nan, 15.5)

Calculamos la desvio estandar (std vs nanstd).

np.std(mtrz_3x3x3),np.nanstd(mtrz_3x3x3)

(nan, 8.539241128651565)

Calculamos la varianza (var vs nanvar).

np.var(mtrz_3x3x3),np.nanvar(mtrz_3x3x3)

(nan, 72.91863905325444)

Con un solo nulo en los 27 elementos de la matriz no podríamos calcular los estadísticos fácilmente si tendríamos a disposición.

Por aquí empiezan las funciones de estadísticas

funciones:

.max()
.max(axis)
.argmax() #devuelve el índice donde se encuentra el mayor valor
.argmax(axis)
.min()
.min(axis)
.argmin()
.argmin(axis)
.ptp()
.ptp(axis) # devuelve la distribucion: max- min
np.percentile(arr,50)
.sort() #ordena de menor a mayor
np.median(arr) #da la mediana
np.std(arr) # desviación estándar
np.var(arr) # varianza
np.mean(arr)
a = np.array([[1,2],[3,4]])

Me encantó la emoción con la que dijo “No me lo vas a creer”, cuando explicó el argmin JAJA

Algo que me pareció interesante y no es tan fácil de comprender a la primera, es que si queremos concatenar algo a una columna, debo ordenarlo en forma de fila y viceversa.
Aunque pensándolo gráficamente es muy obvio.

Lo bueno de este curso es que arma los verdaderos cimientos para la escuela de matemáticas con Python en Data Science.