Python 元组和列表操作(作为 scikit-learn 中 SVM 模型的输入)

Python Tuple & List Manipulation (As an input to the SVM model in scikit-learn)

我有一个如下所示的列表:

[[(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)]
 ...
 ...]

每个元组的形式都是(index, weight),其中index的范围是0到99,weight的取值范围是(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 模型的最佳方式吗?

非常感谢!

使用 dicts 和列表理解很容易做到这一点。

说你原来有

>>> 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)])