我有一个看起来像这样的列表:
[[(0, 0.17), (7, 0.87), (84, 0.04)]
[(0, 0.11), (3, 0.01)]
[(33, 0.56), (81, 0.22), (96, 0.04), (99, 0.97)]
...
...]
每个元组的形式为(索引,权重),其中索引的范围为0到99,权重取值(0,1]。
我想做的是用0的权重填充每个列表的缺失索引,然后删除索引:
原版的:
[(0, 0.17), (7, 0.87), (84, 0.04)]
已转换:
[0.17, 0, 0, 0, 0, 0, 0, 0.87, ..., 0.04, ..., 0]
有谁知道任何简单的方法来做到这一点?
另外,这是在scikit-learn中将功能输入SVM模型的最佳方法吗?
非常感谢!
使用dict
s和列表理解很容易做到。
说你原来
>>> orig = dict([(0, 0.17), (7, 0.87), (84, 0.04)])
列表的逻辑大小为100。
做就是了
>>> [0 if i not in orig else orig[i] for i in range(100)]
如果您打算针对sklearn
相关问题(例如SVM)进一步进行处理,建议您将其转换为numpy.array
:
>>> w = np.array([0 if i not in orig else orig[i] for i in range(100)])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句