1. Funciones para crear arreglos

Creamos un array usando la función numpy.arange que ya conocemos:

src/01.py

arr = np.arange(0,20,2)
print(arr) # [ 0  2  4  6  8 10 12 14 16 18]

La función numpy.arange no es la única que nos permite generar un arreglo, la función rand contenida en el submodulo random permite generar un array con números aleatorios entre 0 y 1 con una determinada forma (shape).

# Random values in a given shape.
arr_flot = np.random.rand(4,3)
print(arr_flot)

rand genera valores float, para generar valores enteros usamos numpy.random.randint, podemos especificar un valor superior, en este caso serán entre 0 y 100:

arr_ent = np.random.randint(100, size=(2,3))
print(arr_ent)

También tenemos otra función para generar arreglos, es la función numpy.full, el primer valor indica la forma (filasxcolumnas), el segundo parámetro indica el valor contenido en todos los elementos del arreglo:

arr_6 = np.full((3,3),6)
print(arr_6)
'''
[[6 6 6]
 [6 6 6]
 [6 6 6]]
'''

2. Funciones para manipular arreglos

2.1. Append

Esta función es muy similar a la función append usada con las listas, numpy.append añade nuevos valores al final del arreglo.

arr = np.append(arr, [12,13,14,51])
print(arr) # [ 0  2  4  6  8 10 12 14 16 18 12 13 14 51]

NOTA: Sino especificamos el eje (axis) el arreglo resultante lo convierte en vector, lo aplana.

In [17]: l1 = [1,2,3,4,5,6]

In [18]: m1 = np.array(l1).reshape((2,3))

In [19]: np.append(m1,[[7,8,9]])
Out[19]: array([1, 2, 3, 4, 5, 6, 7, 8, 9])

Si queremos mantener la estructura en forma de matriz original usamos el parámetro axis.

In [20]: np.append(m1,[[7,8,9]],axis=0)
Out[20]: 
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

Si queremos añadir como columna, esto no funciona:

In [22]: np.append(m1,[[7,8,9]],axis=1)

Debemos hacer esto:

In [24]: np.append(m1,[[7],[8]],axis=1)
Out[24]: 
array([[1, 2, 3, 7],
       [4, 5, 6, 8]])

2.2. Insert

numpy.insert permite insertar en una posición determinada, la función toma 3 parámetros, el arreglo que deseamos modificar, el segundo es la posición donde deseamos agregar los nuevos valores, el tercer y último parámetro es la lista de nuevos valores a agregar.

np.insert(arr,2, [42,34])

Nota: Esta función aplana el array que le pasemos.

Ejemplos:

In [25]: a = np.array([[1,1],[2,2],[3,3]])

In [26]: a
Out[26]: 
array([[1, 1],
       [2, 2],
       [3, 3]])

In [27]: np.insert(a,1,5,axis=1)
Out[27]: 
array([[1, 5, 1],
       [2, 5, 2],
       [3, 5, 3]])
In [28]: np.insert(a,1,[9,9,9],axis=1)
Out[28]: 
array([[1, 9, 1],
       [2, 9, 2],
       [3, 9, 3]])

2.3. Delete

numpy.delete vale para quitar valores al array.

np.delete(arr_ent,0,axis=1)

Ejemplos.

Borra el elemento pero no modifica el arreglo original:

In [29]: v1=np.array([1,2,3])

In [30]: v1
Out[30]: array([1, 2, 3])

In [31]: np.delete(v1,1)
Out[31]: array([1, 3])

In [32]: v1
Out[32]: array([1, 2, 3])

Borramos una columna:

In [33]: m1=np.array([[1,2,3],[1,2,3]],dtype=int)

In [34]: m1
Out[34]: 
array([[1, 2, 3],
       [1, 2, 3]])

In [35]: np.delete(m1,1,axis=1)
Out[35]: 
array([[1, 3],
       [1, 3]])

Indicamos que índices borrar:

In [36]: v1 = np.arange(0,5)

In [37]: v1
Out[37]: array([0, 1, 2, 3, 4])

In [38]: np.delete(v1,[2,4])
Out[38]: array([0, 1, 3])

3. Recursos

4. Enlaces externos