【发布时间】:2018-03-22 10:40:46
【问题描述】:
假设我有一个元素列表:
my_list = ['CatA', 'CatB', 'CatC', 'CatA', 'CatA', 'CatC']
我想将此列表转换为唯一元素的索引列表。
所以CatA 分配给索引0,CatB 分配给索引1,CatC 分配给索引2。
我想要的结果是:
result = [0, 1, 2, 0, 0, 2]
目前,我通过创建一个字典来为每个元素分配唯一的 id,然后使用列表推导来创建最终的索引列表:
unique_classes = np.unique(my_list)
conversion_dict = dict(unique_classes, range(len(unique_classes))
result = [conversion_dict[i] for i in my_list]
我的问题是:有没有更简单直接的方法?
我正在考虑拥有一个大的类别列表,因此它需要高效,但阻止我手动创建唯一列表、字典和列表理解。
【问题讨论】:
-
numpy.unique 是一种方法(我不记得哪个 kwarg 必须设置为 True,但它在 numpy 文档中)。