Seleccion e indices en Numpy


In [2]:
import numpy as np

In [3]:
# crear un arreglo
arr = np.arange(0,11)

In [4]:
# desplegar el arreglo
arr


Out[4]:
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10])

seleccion utilizando los corchetes

se utilizan los indices muy similar a las listas


In [5]:
#obtener el valor del indice 8
arr[8]


Out[5]:
8

In [6]:
#obtener los valores de un rango
arr[1:5]


Out[6]:
array([1, 2, 3, 4])

In [7]:
#obtener los valores de otro rango
arr[0:5]


Out[7]:
array([0, 1, 2, 3, 4])

Reemplazar valores


In [8]:
# reemplazar valores en un rango determinado
arr[0:5]=100

# desplegar el arreglo

arr


Out[8]:
array([100, 100, 100, 100, 100,   5,   6,   7,   8,   9,  10])

In [9]:
#  Generar nuevamente el arreglo
arr = np.arange(0,11)

# desplegar
arr


Out[9]:
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10])

In [10]:
# corte de un arreglo
slice_of_arr = arr[0:6]

# desplegar el corte
slice_of_arr


Out[10]:
array([0, 1, 2, 3, 4, 5])

In [11]:
# cambiar valores del corte
slice_of_arr[:]=99

# desplegar los valores del corte
slice_of_arr


Out[11]:
array([99, 99, 99, 99, 99, 99])

Tomar en cuenta que los cambios tambien se realizaron al arreglo original


In [12]:
# desplegar arreglo
arr


Out[12]:
array([99, 99, 99, 99, 99, 99,  6,  7,  8,  9, 10])

La información no es copiada para evitar problemas de memoria


In [13]:
# para obtener una copia se debe hacer explicitamente
arr_copy = arr.copy()

# desplegar el arreglo copia
arr_copy


Out[13]:
array([99, 99, 99, 99, 99, 99,  6,  7,  8,  9, 10])

Indices en un arreglo 2D (matrices)

La forma general de un arreglo 2d es la siguiente arr_2d[row][col] o arr_2d[row,col]


In [14]:
# generar un arreglo 2D
arr_2d = np.array(([5,10,15],[20,25,30],[35,40,45]))

#Show
arr_2d


Out[14]:
array([[ 5, 10, 15],
       [20, 25, 30],
       [35, 40, 45]])

In [15]:
# indices de filas
arr_2d[1]


Out[15]:
array([20, 25, 30])

In [16]:
# Formato es arr_2d[row][col] o arr_2d[row,col]

# Seleccionar un solo elemento
arr_2d[1][0]


Out[16]:
20

In [17]:
# Seleccionar un solo elemento
arr_2d[1,0]


Out[17]:
20

In [18]:
# Cortes en 2D

# forma (2,2) desde la esquina superior derecha
arr_2d[:2,1:]


Out[18]:
array([[10, 15],
       [25, 30]])

In [19]:
#forma desde la ultima fila
arr_2d[2]


Out[19]:
array([35, 40, 45])

In [20]:
# forma desde la ultima fila
arr_2d[2,:]


Out[20]:
array([35, 40, 45])

In [22]:
# longitud de un arreglo
arr_length = arr2d.shape[1]

Seleccion


In [28]:
arr = np.arange(1,11)
arr


Out[28]:
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])

In [30]:
arr > 4


Out[30]:
array([False, False, False, False,  True,  True,  True,  True,  True,  True], dtype=bool)

In [31]:
bool_arr = arr>4

In [32]:
bool_arr


Out[32]:
array([False, False, False, False,  True,  True,  True,  True,  True,  True], dtype=bool)

In [33]:
arr[bool_arr]


Out[33]:
array([ 5,  6,  7,  8,  9, 10])

In [34]:
arr[arr>2]


Out[34]:
array([ 3,  4,  5,  6,  7,  8,  9, 10])

In [37]:
x = 2
arr[arr>x]


Out[37]:
array([ 3,  4,  5,  6,  7,  8,  9, 10])