来自字符串的热门 - 获取唯一身份列表中的索引

时间:2018-06-11 06:03:44

标签: python numpy one-hot-encoding

有没有一种方便的方法从字符串数组中提取索引?我希望用NumPy做一个简单的单热编码。我有一种方法可以自己进行编码,但首先我需要一个索引列表进行编码。

获取已排序的唯一元素非常简单。

>>> vals = np.array(['a', 'b', 'c', 'b', 'a'])
>>> uniq = np.unique(vals)
array(['a', 'b', 'c'], dtype='<U1')

然后进行转换。首先,我考虑使用list.index使用基本Python列表,但这涉及将列表从ndarray转换为list并返回。我想有一个更好的解决方案。

我想出的是:

idx = [np.where(uniq == v) for v in vals]

但这会生成一组nd-arrays。

对于预期的输出自然而然:

[0, 1, 2, 1, 0]

1 个答案:

答案 0 :(得分:1)

设置return_inverse=True

vals = np.array(['a', 'b', 'c', 'b', 'a'])
u, indices = np.unique(vals, return_inverse=True)

print(u)  # ['a' 'b' 'c']
print(indices)  # [0 1 2 1 0]