NumPy

Numpy

Tutorial Numpy: Propiedades y atributos de arrays de Numpy

Aprende sobre las propiedades y atributos de Arrays en Numpy. Entiende cómo optimizar y manipular datos eficientemente en Python usando Numpy.

¿Qué es un atributo o propiedad en un objeto de Python?

En Python, un atributo o propiedad es una característica de un objeto que almacena algún tipo de información relevante sobre ese objeto. Los atributos son variables asociadas a un objeto y constituyen una parte fundamental del paradigma de programación orientada a objetos en Python. Mientras que los métodos son funciones que operan sobre objetos, los atributos proporcionan datos sobre el estado o configuración del objeto.

La estructura de un atributo puede parecerse a una variable, pero su alcance y su contexto están limitados al objeto al que pertenecen. Puedes acceder y modificar los atributos utilizando la notación de puntos (.).

Por ejemplo, un objeto de una clase Persona podría tener atributos como nombre, edad, y altura:

class Persona:
    def __init__(self, nombre, edad, altura):
        self.nombre = nombre
        self.edad = edad
        self.altura = altura

# Creando una instancia de Persona
persona1 = Persona("Juan", 30, 175)

# Accediendo a los atributos
nombre = persona1.nombre      # "Juan"
edad = persona1.edad          # 30
altura = persona1.altura      # 175

# Modificando un atributo
persona1.edad = 31

En los arrays de Numpy, los atributos proporcionan información crucial sobre la estructura y propiedades del array. Pueden incluir dimensiones, forma, tipo de datos y más. Por ejemplo, shape es un atributo común del objeto array que indica las dimensiones del array.

import numpy as np

# Creando un array de Numpy
array_np = np.array([[1, 2, 3], [4, 5, 6]])

# Accediendo al atributo 'shape'
forma = array_np.shape    # (2, 3)

# Accediendo al atributo 'dtype'
tipo_dato = array_np.dtype    # dtype('int64')

En este contexto, los atributos son esenciales para manipular y trabajar con arrays de Numpy, ya que proporcionan la metainformación necesaria para muchas operaciones y transformaciones avanzadas.

Listado completo de atributos de un array en Numpy

Los arrays en Numpy disponen de una variedad de atributos que proporcionan información detallada acerca de sus propiedades y estructura. 

A continuación se muestra un listado completo y detallado de los principales atributos de un array en Numpy:

  • ndim: Retorna el número de dimensiones (ejes) del array. Es un entero.
import numpy as np

array = np.array([[1, 2, 3], [4, 5, 6]])
num_dimensiones = array.ndim  # 2
  • shape: Proporciona una tupla de enteros indicando el tamaño del array en cada dimensión.
forma = array.shape  # (2, 3)
  • size: Devuelve el número total de elementos en el array, equivalente al producto de los elementos de shape.
tamano = array.size  # 6
  • dtype: Informa del tipo de datos de los elementos del array, que es una instancia de numpy.dtype.
tipo_dato = array.dtype  # dtype('int64')
  • itemsize: Indica el tamaño en bytes de un solo elemento del array.
tamano_elemento = array.itemsize  # 8 bytes en un sistema de 64 bits
  • nbytes: Devuelve el número total de bytes consumidos por los elementos del array. Es igual a size multiplicado por itemsize.
bytes_totales = array.nbytes  # 48
  • T: Proporciona una vista transpuesta del array. Cambia el orden de las dimensiones.
transpuesto = array.T  # [[1, 4], [2, 5], [3, 6]]
  • real y imag: Para arrays complejos, estos atributos proporcionan las partes real e imaginaria del array, respectivamente.
array_complejo = np.array([1 + 2j, 3 + 4j])
parte_real = array_complejo.real  # [1. 3.]
parte_imaginaria = array_complejo.imag  # [2. 4.]
  • flat: Devuelve un iterador sobre todos los elementos del array, permitiendo un acceso flat a todos los elementos.
iterador = array.flat
flat_list = [i for i in iterador]  # [1, 2, 3, 4, 5, 6]
  • base: Si el array es una vista de otro array, este atributo apunta al array base; si no, es None.
array_copia = array.view()
base = array_copia.base  # array original
  • flags: Devuelve un objeto con la información sobre la memoria del array. Atributos como C_CONTIGUOUS, F_CONTIGUOUS, entre otros, son utilizados para optimizaciones de memoria.
banderas_memoria = array.flags
es_c_contiguo = banderas_memoria['C_CONTIGUOUS']  # True

Comprender estos atributos es crucial para realizar operaciones avanzadas y optimizar el rendimiento de las aplicaciones que manipulan grandes volúmenes de datos. Los atributos también facilitan la depuración y el entendimiento de las características del array, proporcionando metainformación esencial para su correcta manipulación.

Ejemplos de código

Los atributos o propiedades de un array en Numpy permiten manipular y optimizar operaciones con arrays mediante el acceso directo a información crucial sobre la estructura y propiedades del array. Estos atributos son esenciales para una multitud de tareas, desde la configuración inicial hasta el análisis de datos y el procesamiento avanzado. 

A continuación, se detallan algunos de los usos más comunes de los atributos de un array en Numpy:

Comprensión de la estructura del array:

  • shape y ndim: Saber las dimensiones y la forma del array es básico para cualquier manipulación de datos. Por ejemplo, para realizar operaciones de broadcasting, concatenación o reshape, necesitamos conocer estos atributos.
array = np.array([[1, 2], [3, 4], [5, 6]])
print(array.shape)  # (3, 2)
print(array.ndim)   # 2

Optimización del uso de memoria:

  • size, itemsize y nbytes: Estos atributos permiten una comprensión precisa del tamaño en memoria del array, lo cual es fundamental para optimizar el uso de memoria, especialmente en aplicaciones que manejan grandes volúmenes de datos.
print(array.size)      # 6
print(array.itemsize)  # 8
print(array.nbytes)    # 48

Transformaciones de datos:

  • T: La transposición de un array es una operación común en cálculos matriciales y en la preprocesamiento de datos. La propiedad T proporciona una manera rápida y eficiente de acceder a la transposición del array.
transposed_array = array.T
print(transposed_array)  # [[1, 3, 5], [2, 4, 6]]

Manipulación y acceso a elementos:

  • flat: cuando es necesario iterar sobre todos los elementos de un array de manera lineal, el uso del iterador flat puede ser muy útil.
for item in array.flat:
    print(item)

Análisis y representación:

  • dtype: Conocer el tipo de dato de los elementos del array es fundamental para asegurar la coherencia en operaciones matemáticas y evitar errores que puedan surgir de operaciones con tipos incompatibles.
print(array.dtype)  # dtype('int64')

Optimización de operaciones en memoria:

  • flags: Información sobre si un array es C-contiguous o F-contiguous puede ser utilizada para optimizar operaciones que dependen del layout en memoria del array. Esto es especialmente relevante en aplicaciones de alto rendimiento o en aquellas que interaccionan con bibliotecas en otros lenguajes (e.g., C, Fortran).
print(array.flags['C_CONTIGUOUS'])  # True

Manejo de arrays derivados:

  • base: Distinguir entre arrays originales y vistas es esencial para evitar problemas de modificación involuntaria de datos y para entender las dependencias en la memoria.
copy_array = array.view()
print(copy_array.base is array)  # True

Mediante el uso inteligente de estos atributos, se pueden crear programas más eficientes y robustos, que manejan y procesan datos de manera óptima, al mismo tiempo que mantienen claridad y simplicidad en el código. Estas propiedades de Numpy convierten a la biblioteca en una herramienta indispensable para el análisis numérico y científico en Python.

Certifícate en Numpy con CertiDevs PLUS

Ejercicios de esta lección Propiedades y atributos de arrays de Numpy

Evalúa tus conocimientos de esta lección Propiedades y atributos de arrays de Numpy con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Todas las lecciones de Numpy

Accede a todas las lecciones de Numpy y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Certificados de superación de Numpy

Supera todos los ejercicios de programación del curso de Numpy y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.

En esta lección

Objetivos de aprendizaje de esta lección

  • Comprender la estructura y sintaxis de los atributos de arrays en Numpy.

  • Conocer los principales atributos como ndim, shape, size, dtype, itemsize, y nbytes.

  • Aprender a utilizar estos atributos para optimizar el uso de memoria.

  • Saber cómo utilizar la transposición y el acceso lineal a los elementos con T y flat.

  • Identificar atributos avanzados como base y flags para manejar arrays derivados y optimizar operaciones.

  • Aplicar estos conocimientos en operaciones prácticas y manipulaciones de datos.