📜  使用字典在Python的稀疏矩阵

📅  最后修改于: 2022-05-13 01:55:28.402000             🧑  作者: Mango

使用字典在Python的稀疏矩阵

稀疏矩阵是其中大多数元素都为零值的矩阵,因此需要有效的方法来存储此类矩阵。稀疏矩阵通常用于应用机器学习,例如包含将类别映射到计数的数据编码的数据,以及机器学习的整个子领域,例如自然语言处理 (NLP)。

例子:

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.

用二维数组表示稀疏矩阵会导致大量内存的浪费,因为矩阵中的零在大多数情况下是没有用的。因此,我们只存储非零元素,而不是用非零元素存储零。这些有效的方法只需要将非零值与其索引一起存储,以便在需要时可以检索原始矩阵。 Python一种这样有效的方法是使用字典。 Python的字典将数据存储在键值对中,就像Java的映射一样。字典以无序方式存储数据。

方法:

  • 首先,我们采用一个稀疏矩阵并创建一个空字典。
  • 然后我们遍历矩阵的所有元素并检查它们是零还是非零元素。
  • 非零元素被添加到字典中,它们的索引作为键,它们的数据作为字典的键值对中的值。
  • 最后,我们可以打印给出每个元素及其索引的字典。

下面是实现。

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)


输出: