关键词:元组; 字典; 值
字典:键-值(key-value) 字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
For example: d = {key1 : value1, key2 : value2 }
键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
doc_matrix的策略是采用字典来记录矩阵中不为0的元素。自然,字典的key存的是记录元素的位置信息的元组,value是记录元素的具体值。
稀疏矩阵之python实现
http://blog.csdn.net/bitcarmanlee/article/details/52668477
http://www.runoob.com/python/python-dictionary.html
# encoding:utf-8
from scipy.sparse import dok_matrix
a = 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] = 2
a[2, 2] = 2
a[2, 3] = 1
a[2, 4] = 3
print(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 2
import numpy as np
S = 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
(2, 2) 2.0
(0, 3) 1.0
(0, 2) 2.0
(0, 4) 3.0
[3 2 4]
(array([0, 0, 0]), array([3, 2, 4]))
[1.0, 2.0, 3.0]
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.0
Process finished with exit code 0
转载自原文链接, 如需删除请联系管理员。
原文链接:dok_matrix,转载请注明来源!