有没有一种方便的方法从字符串数组中提取索引?我希望用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]
答案 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]