本文共 1790 字,大约阅读时间需要 5 分钟。
关键词:元组; 字典; 值
字典:键-值(key-value) 字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示: For example: d = {key1 : value1, key2 : value2 } 键必须是唯一的,但值则不必。 值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。doc_matrix的策略是采用字典来记录矩阵中不为0的元素。自然,字典的key存的是记录元素的位置信息的元组,value是记录元素的具体值。
稀疏矩阵之python实现
# encoding:utf-8from scipy.sparse import dok_matrixa = dok_matrix((3, 10))'''Dictionary of keys(DOK)DOK represents non-zero values as a dictionary mapping tuples to values.[1] DOK represents non-zero values as a dictionary, mapping tuples to values.DOK 将非零值表示成字典,将元组映射到值。进一步理解:DOK 将元组映射到值,将非零值表示成字典。元组也就是矩阵的(行号,列号),值就是元组在矩阵上对应的某行某列的值。如:a[1][1]=1,元组就是(1,1),对应矩阵a的第2行,第2列,且矩阵在该位置值为1.[2] DOK (represents non-zero values as a dictionary) mapping tuples to values.如果是[2], 则可简化为DOK mapping tuples to values. # DOK做主语,后面不应该接mapping. 所以我认为是[1]理解比较合理。This format is good for incrementally constructing a sparse array, but poor for iterating over non-zero values in sorted order.这种格式对于增量构建稀疏数组有利,但是在迭代有序的非零值上表现很差。'''a[1, 2] = 2a[2, 2] = 2a[2, 3] = 1a[2, 4] = 3print(a)print('---------------------')print(a[2])print('---------------------')print(a[2].nonzero()[1])print(a[2].nonzero())print(a[2].values())print('====================')'''(1, 2) 2.0(2, 3) 1.0(2, 4) 3.0(2, 2) 2.0'''# example 2import numpy as npS = dok_matrix((5, 5), dtype=np.float32)for i in range(5): for j in range(5): S[i, j] = i + j # Update element print(S[i,j])
D:\Anaconda2\python.exe D:/pycode/NCF_sq/analysis/sample.py
(1, 2) 2.0 (2, 3) 1.0 (2, 4) 3.0(0, 3) 1.0
(0, 2) 2.0[3 2 4]
(array([0, 0, 0]), array([3, 2, 4]))0.0
1.0 2.0 3.0 4.0 1.0 2.0 3.0 4.0 5.0 2.0 3.0 4.0 5.0 6.0 3.0 4.0 5.0 6.0 7.0 4.0 5.0 6.0 7.0 8.0Process finished with exit code 0
博客
转载地址:http://yyrfi.baihongyu.com/