使用字典在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)
输出:
The following dictionary shows the positional of non-zero elements in the sparse matrix
{(0, 3): 1, (1, 0): 2, (1, 4): 3, (2, 3): 4}