Skip to content

Arrays#

Conceptos básicos sobre Arrays#

Un array en la librería NumPy es una estructura de datos fundamental para trabajar con conjuntos de números. Imagina una lista muy organizada y eficiente, diseñada específicamente para realizar cálculos numéricos de manera rápida.

Se pueden crear NumPy arrays directamente desde una lista de Python.

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

NumPy array también puede trabajar con más de una dimensión.

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

Arrange#

Sirve para generar un array con valores igualmente espaciados dentro de un rango definido.

np.arange(15)
# array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14])
np.arange(5,10)
#array([5, 6, 7, 8, 9])
np.arange(0,12,3)
# array([0, 3, 6, 9])

Ceros y Unos#

Para tema de machine learning es muy importante poder generar un array o matriz de ceros o unos, por lo que NumPy ofrece directamente un método para ello.

np.zeros(3) 
# array([0., 0., 0.])
np.zeros((2,5,5)) # 2 matrices de 5x5 
'''
array([[[0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.]],

       [[0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.]]])
'''
np.ones(3)
# array([1., 1., 1.])
np.ones((3,3))
'''
array([[1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.]])
'''

Linspace#

Devuelve números espaciados uniformemente en un intervalo especificado.

np.linspace(0,10,3) 
# array([ 0.,  5., 10.])
np.linspace(0,10,20) # 20 valores x-espaciados entre 0 y 10
'''
array([ 0.        ,  0.52631579,  1.05263158,  1.57894737,  2.10526316,
        2.63157895,  3.15789474,  3.68421053,  4.21052632,  4.73684211,
        5.26315789,  5.78947368,  6.31578947,  6.84210526,  7.36842105,
        7.89473684,  8.42105263,  8.94736842,  9.47368421, 10.        ])
'''
np.linspace(0,10,21) # 21 valores x-espaciados entre 0 y 10
'''
array([ 0. ,  0.5,  1. ,  1.5,  2. ,  2.5,  3. ,  3.5,  4. ,  4.5,  5. ,
        5.5,  6. ,  6.5,  7. ,  7.5,  8. ,  8.5,  9. ,  9.5, 10. ])
'''

Eye#

Devuelve la matriz identidad de la dimensión que se le indique.

np.eye(6)
'''
array([[1., 0., 0., 0., 0., 0.],
       [0., 1., 0., 0., 0., 0.],
       [0., 0., 1., 0., 0., 0.],
       [0., 0., 0., 1., 0., 0.],
       [0., 0., 0., 0., 1., 0.],
       [0., 0., 0., 0., 0., 1.]])
'''

Random#

Paquete dentro de la librería NumPy que se encarga de generar arrays aleatorios.

rand#

Genera números aleatorios siguiendo una distribución uniforme. Los valores generados se encuentran en el intervalo [0, 1), es decir, desde 0 (inclusive) hasta 1 (exclusivo).

np.random.rand(3)
# array([0.36113539, 0.88446185, 0.48074398])
np.random.rand(2,3,5) # 2 matrices de 3x5

'''
array([[[0.04633713, 0.53137266, 0.74117606, 0.20512219, 0.6168586 ],
        [0.06443939, 0.34243107, 0.3059021 , 0.20598129, 0.47033699],
        [0.9692372 , 0.41828453, 0.74705593, 0.57757702, 0.30476353]],

       [[0.49879649, 0.42105791, 0.51103856, 0.45574341, 0.798533  ],
        [0.79231305, 0.08936987, 0.68506619, 0.93837446, 0.02559339],
        [0.83318277, 0.40604363, 0.69039322, 0.68334075, 0.93850892]]])
'''

randn#

Genera números aleatorios siguiendo una distribución normal estándar. Los valores generados pueden ser cualquier número real, pero la mayoría se concentrará alrededor de 0.

np.random.randn(2)
# array([ 0.18584968, -0.1794187 ])
np.random.randn(5,5)

'''
array([[-0.20626407,  1.16792749, -0.4729137 ,  1.13940936, -0.59339953],
       [-0.99356095, -0.14937524,  1.55929908, -3.18371919,  0.66314423],
       [ 0.73271548, -0.59890564,  0.36802319,  0.63084196,  0.59189165],
       [-2.00064426,  0.14159769, -1.36269102,  1.52719339, -0.70780552],
       [ 0.18033592, -0.12497444, -0.40132878,  1.67288472,  0.45831362]])
'''

randint#

Genera números aleatorios enteros entre el rango de valores definido.

np.random.randint(1,100) # Valor entre 1 y 100
# 88
np.random.randint(1,100,10) # 10 valores entre 1 y 100
'''
array([39, 50, 72, 18, 27, 59, 15, 97, 11, 14])
'''

seed#

Sirve para cambiar la semilla utilizada para generar números aleatorios, usando la misma semilla se generarán los mismos números aleatorios.

np.random.seed(42)
np.random.rand(4)
# array([0.37454012, 0.95071431, 0.73199394, 0.59865848])
np.random.seed(42)
np.random.rand(4)
# array([0.37454012, 0.95071431, 0.73199394, 0.59865848])

Métodos y atributos de los arrays#

Reshape#

Cambia la dimensión de un array.

arr = np.arange(25)
# arr = array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24])
arr.reshape(5,5)
'''
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19],
       [20, 21, 22, 23, 24]])
'''

max, min, argmax, argmin#

Estos son métodos útiles para encontrar valores máximos o mínimos. O para encontrar las ubicaciones de sus índices usando argmin o argmax.

ranarr = np.random.rand(4)
# ranarr = array([0.37454012, 0.95071431, 0.73199394, 0.59865848])
ranarr.max() # 0.9507143064099162 - Valor max
ranarr.argmax() # 1 - Posición del primer valor max
ranarr.min() # 0.3745401188473625 - Valor min
ranarr.argmin() # 0 - Posición del valor min
ranarr.dtype # dtype('float64') - Tipo de datos dentro del array

shape#

Devuelve la dimensión del array

ranarr = np.random.rand(4)
# ranarr = array([0.37454012, 0.95071431, 0.73199394, 0.59865848])
ranarr.shape
# (4,)
new= ranarr.reshape(2,2)
new.shape
# (2, 2)