给定一个这样的结构文件:
- 单列行是键
- 键的非零值
例如:
abc
ef 0.85
kl 0.21
xyz 0.923
cldex
plax 0.123
lion -0.831
如何创建一个稀疏矩阵,使用
csr_matrix
?('abc', 'ef') 0.85
('abc', 'kl') 0.21
('abc', 'xyz') 0.923
('cldex', 'plax') 0.123
('cldex', 'lion') -0.31
我尝试过:
from collections import defaultdict
x = """abc
ef 0.85
kl 0.21
xyz 0.923
cldex
plax 0.123
lion -0.831""".split('\n')
k1 = ''
arr = defaultdict(dict)
for line in x:
line = line.strip().split('\t')
if len(line) == 1:
k1 = line[0]
else:
k2, v = line
v = float(v)
arr[k1][k2] = v
[输出]
>>> arr
defaultdict(dict,
{'abc': {'ef': 0.85, 'kl': 0.21, 'xyz': 0.923},
'cldex': {'plax': 0.123, 'lion': -0.831}})
使用嵌套字典结构不如使用scipy
的稀疏矩阵结构方便。
是否有一种方法可以将上述给定格式的文件轻松地读入任何scipy
稀疏矩阵对象中?