【发布时间】:2017-09-10 13:48:17
【问题描述】:
我想根据值将列表映射为数字。
例如:
['aa', 'b', 'b', 'c', 'aa', 'b', 'a'] -> [0, 1, 1, 2, 0, 1, 3]
我正在尝试通过使用 numpy 和映射字典来实现这一点。
def number(lst):
x = np.array(lst)
unique_names = list(np.unique(x))
mapping = dict(zip(unique_names, range(len(unique_names)))) # Translating dict
map_func = np.vectorize(lambda name: d[name])
return map_func(x)
有没有更优雅/更快的方法来做到这一点?
更新:奖励问题 - 按照维护的顺序进行。
【问题讨论】:
-
它们不一定是字母...我是说一般情况
-
但您似乎也希望继续查看预期的样本输出,而 func
number无法实现,对吧? -
@Divakar 好吧,起初我并没有太担心。现在我觉得值得考虑
标签: python performance numpy