Array dispersa en Python usando el diccionario

Una array dispersa es una array en la que la mayoría de los elementos tienen valor cero y, por lo tanto, se requieren formas eficientes de almacenar dichas arrays. Las arrays dispersas se utilizan generalmente en el aprendizaje automático aplicado, como en los datos que contienen codificaciones de datos que asignan categorías para contar y también en subcampos completos del aprendizaje automático, como el procesamiento del lenguaje natural (NLP).

Ejemplos:

0 0 0 1 0            
2 0 0 0 3
0 0 0 4 0

Above is sparse matrix with only 4 non-zero elements.

La representación de una array dispersa mediante una array 2D conduce al desperdicio de mucha memoria, ya que los ceros en la array no sirven en la mayoría de los casos. Entonces, en lugar de almacenar ceros con elementos distintos de cero, solo almacenamos elementos distintos de cero. Estas formas eficientes requieren que solo los valores distintos de cero se almacenen junto con su índice para que la array original se pueda recuperar cuando sea necesario. Una de esas formas eficientes en Python es el uso de un diccionario . Dictionary en Python almacena datos en pares clave-valor como mapas en Java. El diccionario almacena datos de manera desordenada.

Acercarse:

  • Primero, tomamos una array dispersa y creamos un diccionario vacío.
  • Luego iteramos a través de todos los elementos de la array y verificamos si son elementos cero o distintos de cero.
  • Los elementos distintos de cero se agregan al diccionario con su índice como clave y sus datos como valor en los pares clave-valor del diccionario.
  • Finalmente, podemos imprimir el diccionario dando cada elemento con su índice.

A continuación se muestra la implementación.

Python3

# creating sparse matrix
arr = [[0, 0, 0, 1, 0],
       [2, 0, 0, 0, 3],
       [0, 0, 0, 4, 0]]
 
# creating empty dictionary
dic = {}
 
# iterating through the matrix
for i in range(len(arr)):
    for j in range(len(arr[i])):
        if arr[i][j] != 0:
 
            # adding non zero elements to
            # the dictionary
            dic[i, j] = arr[i][j]
 
print("Position of non-zero elements in the matrix:")
print(dic)

Producción:

El siguiente diccionario muestra la posición de los elementos distintos de cero en la array dispersa

{(0, 3): 1, (1, 0): 2, (1, 4): 3, (2, 3): 4}

Publicación traducida automáticamente

Artículo escrito por mehulp1612 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 *