Propiedades de los arrays Numpy
Las propiedades permiten obtener información de las dimensiones de un array Numpy, el número y tipo de elementos que pueden contener y sobre la memoria ocupada.
ndim
Obtener el número de dimensiones de un array.
import numpy as np a = np.array([1, 2, 3], dtype=np.int16) b = np.array([(1, 2, 3), (4, 5, 6)], dtype=np.int8) c = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]], dtype=np.uint8) print(a.ndim) # 1 dimensión print(b.ndim) # 2 dimensiones print(c.ndim) # 3 dimensiones
shape
Obtener las dimensiones de un array (en una tupla).
print(a.shape) # (3,) -> 3 print(b.shape) # (2, 3) -> 2x3 print(c.shape) # (2, 2, 2) -> 2x2x2
size
Obtener el tamaño o número de elementos de un array.
print(a.size) # 3 print(b.size) # 6 print(c.size) # 8
type()
Obtener el tipo de objeto de un array Numpy.
print(type(a)) # class numpy.ndarray print(type(b)) # class numpy.ndarray print(type(c)) # class numpy.ndarray
isinstance()
Comprobar si un objeto es un array Numpy.
print(isinstance(a, np.ndarray)) # True print(isinstance(b, np.ndarray)) # True print(isinstance(c, np.ndarray)) # True
dtype
Obtener el tipo de los datos de un array.
print(a.dtype) # int16 print(b.dtype) # int8 print(c.dtype) # uint8
itemsize
Obtener el tamaño en bytes que ocupa cada elemento en un array.
print(a.itemsize) # 2 bytes print(b.itemsize) # 1 byte print(c.itemsize) # 1 byte
nbytes
Obtener el tamaño total en bytes que ocupa un array.
print(a.nbytes) # 6 bytes print(b.nbytes) # 6 bytes print(c.nbytes) # 8 bytes
flags
Obtener información sobre la memoria ocupada por un array.
print(a.flags) # C_CONTIGUOUS : True Los datos comparten mismo segmento (C) # F_CONTIGUOUS : True Los datos comparten mismo segmento (Fortram) # OWNDATA : True Array propietario de espacio, no comparte # WRITEABLE : True Es posible escribir en el área de datos # ALIGNED : True Datos alineados adecuadamente para hardware # WRITEBACKIFCOPY : False Indica si el array es copia de otro # UPDATEIFCOPY : False (No se utiliza)
Métodos para cambiar la estructura de un array
Los métodos permiten cambiar el tipo de datos de los elementos de un array, modificar su forma y tamaño, transponer un array, intercambiar sus ejes, convertir a vectores y crear vistas.
astype()
Cambiar el tipo de los datos de un array.
a = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]], dtype=np.uint8) print(a.dtype) # uint8 print(a.nbytes) # 8 bytes (Son 8 elementos x 1 byte = 8 bytes) a = a.astype(np.float32) # Convertir el tipo a float32 print(a.dtype) # float32 print(a.nbytes) # 32 bytes (Son 8 elmentos x 4 bytes = 32 bytes) print(a) # [[[1. 2.] # [3. 4.]] # # [[5. 6.] # [7. 8.]]]
shape
Cambiar la forma de un array.
# Cambiar la forma de un array de (3x2) a (2x3). a = np.ones((3, 2)) a.shape = (2, 3) print(a) # [[1. 1. 1.] # [1. 1. 1.]] # Cambiar la forma de un array de (3x2) a (1x6). a = np.ones((3, 2)) a.shape = (6) print(a) # [1. 1. 1. 1. 1. 1.]
reshape()
Cambiar la forma de un array.
# Cambiar la forma de un array de (1x6) a (3x2). a = np.arange(1, 7) print(a) # [1 2 3 4 5 6] a = a.reshape(3, 2) print(a) # [[1 2] # [3 4] # [5 6]]
resize()
Redimensionar un array rellenando los elementos nuevos.
# Redimensionar array de (1x9) a (4x4) rellenando # los elementos nuevos. a = np.arange(1, 10) print(a) # [1 2 3 4 5 6 7 8 9] a = np.resize(a, (4, 4)) print(a) # [[1 2 3 4] # [5 6 7 8] # [9 1 2 3] # [4 5 6 7]] # Redimensionar un array de (1x9) a (2x2) eliminando elementos. a = np.arange(1, 10) print(a) # [1 2 3 4 5 6 7 8 9] a = np.resize(a, (2, 2)) print(a) # [[1 2] # [3 4]]
transpose()
Transponer un array.
# Transponer un array de (2x3). a = np.array([(1, 2, 3), (4, 5, 6)]) print(a) # [[1 2 3] # [4 5 6]] a = np.transpose(a) print(a) # [[1 4] # [2 5] # [3 6]]
swapaxes()
Intercambiar los ejes de un array.
# Intercambiar los ejes de un array de (2x3). a = np.array([(10, 11, 12), (13, 14, 15)]) print(a) # [[10 11 12] # [13 14 15]] a = a.swapaxes(0, 1) print(a) # [[10 13] # [11 14] # [12 15]]
flatten()
Convertir un array 2D en un vector.
# Convertir un array (2x3) en un vector de 6 elementos. a = np.array([(1, 2, 3), (4, 5, 6)]) print(a) # [[1 2 3] # [4 5 6]] a = a.flatten() print(a) # [1 2 3 4 5 6] # Convertir un array 2D en vector ordenando los # elementos por columnas: a = np.array([(1, 2, 3), (4, 5, 6)]) print(a) # [[1 2 3] # [4 5 6]] a = a.flatten('F') print(a) # [1 4 2 5 3 6]
ravel()
Crear una vista con forma de vector de un array 2D.
El método ravel() devuelve una vista de los datos siemque que sea posible, no como flatten() que devuelve una copia siempre. Esto hace a ravel() a menudo más rápido pero hay que tener cuidado con las modificaciones en el array que devuelve.
El método ravel() devuelve una vista de los datos siemque que sea posible, no como flatten() que devuelve una copia siempre. Esto hace a ravel() a menudo más rápido pero hay que tener cuidado con las modificaciones en el array que devuelve.
# Crear vista con forma de vector ordenando por columnas (eje 1). a = np.array([(1, 2, 3), (4, 5, 6)]) print(a) # [[1 2 3] # [4 5 6]] print(a.ravel('F')) # [1 4 2 5 3 6] # Crear vista con forma de vector ordenando por filas (eje 0). a = np.array([(1, 2, 3), (4, 5, 6)]) print(a) # [[1 2 3] # [4 5 6]] print(a.ravel('C')) # [1 2 3 4 5 6]