Listas de Python VS arrays Numpy

NumPy es el paquete fundamental para la computación científica en Python. Las arrays NumPy facilitan operaciones matemáticas avanzadas y de otro tipo en grandes cantidades de datos. Por lo general, tales operaciones se ejecutan de manera más eficiente y con menos código de lo que es posible con las secuencias integradas de Python. NumPy no es otro lenguaje de programación sino un módulo de extensión de Python. Proporciona operaciones rápidas y eficientes en arrays de datos homogéneos.

Algunos puntos importantes sobre las arrays Numpy:

  • Podemos crear una array N-dimensional en python usando numpy.array().
  • Los arreglos son por defecto homogéneos, lo que significa que los datos dentro de un arreglo deben ser del mismo tipo de datos. (Tenga en cuenta que también puede crear una array estructurada en python).
  • La operación inteligente de elementos es posible.
  • Numpy array tiene varias funciones, métodos y variables para facilitar nuestra tarea de cálculo de arrays.
  • Los elementos de una array se almacenan de forma contigua en la memoria. Por ejemplo, todas las filas de una array de dos dimensiones deben tener el mismo número de columnas. O una array tridimensional debe tener el mismo número de filas y columnas en cada tarjeta.

Representación de la array Numpy:

  • array numpy unidimensional;

    import numpy as np
      
    a = np.array([1, 2, 3])
    print(a)
    Producción:

    [1 2 3]
    
  • Array Numpy multidimensional:

    import numpy as np
      
    a = np.array([(1, 2, 3), (4, 5, 6)])
    print(a)
    Producción:

    [[1 2 3]
     [4 5 6]]
    

Ventajas de usar arrays Numpy sobre listas de Python:

  • consume menos memoria.
  • rápido en comparación con la lista de python.
  • conveniente de usar.

Lista: Una lista es una colección ordenada y modificable. En Python, las listas se escriben con corchetes.

Algunos puntos importantes sobre las listas de Python:

  • La lista puede ser homogénea o heterogénea.
  • La operación inteligente de elementos no es posible en la lista.
  • La lista de Python es por defecto unidimensional. Pero podemos crear una lista N-Dimensional. Pero también será una lista 1D que almacenará otra lista 1D
  • Los elementos de una lista no necesitan ser contiguos en la memoria.

A continuación se muestran algunos ejemplos que demuestran claramente cómo las arrays Numpy son mejores que las listas de Python al analizar el consumo de memoria, la comparación del tiempo de ejecución y las operaciones compatibles con ambas.

Ejemplo 1: consumo de memoria entre la array Numpy y las listas
En este ejemplo, se creará una lista de Python y una array Numpy de tamaño 1000. Se calculará el tamaño de cada elemento y luego el tamaño total de ambos contenedores y se realizará una comparación en términos de consumo de memoria.

A continuación se muestra la implementación.

# importing numpy package
import numpy as np
  
# importing system module
import sys
  
# declaring a list of 1000 elements 
S= range(1000)
  
# printing size of each element of the list
print("Size of each element of list in bytes: ",sys.getsizeof(S))
  
# printing size of the whole list
print("Size of the whole list in bytes: ",sys.getsizeof(S)*len(S))
  
# declaring a Numpy array of 1000 elements 
D= np.arange(1000)
  
# printing size of each element of the Numpy array
print("Size of each element of the Numpy array in bytes: ",D.itemsize)
  
# printing size of the whole Numpy array
print("Size of the whole Numpy array in bytes: ",D.size*D.itemsize)
Producción:

Size of each element of list in bytes:  48
Size of the whole list in bytes:  48000
Size of each element of the Numpy array in bytes:  8
Size of the whole Numpy array in bytes:  8000

Ejemplo 2: comparación de tiempo entre la array Numpy y las listas de Python
En este ejemplo, se crearán 2 listas de Python y 2 arrays Numpy y cada contenedor tiene 1000000 elementos. Se realizará la multiplicación de elementos tanto en las listas como en los arrays Numpy respectivamente y se analizará la diferencia de tiempo necesaria para la ejecución de ambos contenedores para determinar cuál tarda menos en realizar la operación.

A continuación se muestra la implementación.

# importing required packages
import numpy
import time
   
# size of arrays and lists
size = 1000000  
   
# declaring lists
list1 = range(size)
list2 = range(size)
   
# declaring arrays
array1 = numpy.arange(size)  
array2 = numpy.arange(size)
   
# capturing time before the multiplication of Python lists
initialTime = time.time()
  
# multiplying  elements of both the lists and stored in another list
resultantList = [(a * b) for a, b in zip(list1, list2)]
   
# calculating execution time
print("Time taken by Lists to perform multiplication:", 
      (time.time() - initialTime),
      "seconds")
   
# capturing time before the multiplication of Numpy arrays
initialTime = time.time()
  
# multiplying  elements of both the Numpy arrays and stored in another Numpy array 
resultantArray = array1 * array2
   
# calculating execution time 
print("Time taken by NumPy Arrays to perform multiplication:",
      (time.time() - initialTime),
      "seconds")
Producción:

Time taken by Lists : 0.15030384063720703 seconds
Time taken by NumPy Arrays : 0.005921125411987305 seconds

Ejemplo 3: Efecto de las operaciones sobre arreglos Numpy y Listas de Python
En este ejemplo se demuestra la incapacidad de la lista de Python para realizar una operación básica. Se declarará una lista de Python y una array Numpy que tengan los mismos elementos y se agregará un número entero para incrementar cada elemento del contenedor por ese valor entero sin declaraciones en bucle. Se analizará el efecto de esta operación en la array Numpy y la lista de Python.

A continuación se muestra la implementación.

# importing Numpy package
import numpy as np
  
# declaring a list
ls =[1, 2, 3]
  
# converting the list into a Numpy array
arr = np.array(ls)
  
try:
    # adding 4 to each element of list
    ls = ls + 4
      
except(TypeError):
    print("Lists don't support list + int")
  
# now on array
try:
    # adding 4 to each element of Numpy array
    arr = arr + 4
  
    # printing the Numpy array
    print("Modified Numpy array: ",arr)
      
except(TypeError):
    print("Numpy arrays don't support list + int")
Producción:

Lists don't support list + int
Modified Numpy array: [5 6 7]

Publicación traducida automáticamente

Artículo escrito por NikhilChandwani y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *