如何将一键编码转换为整数?
问题内容:
我有一个形状为(100,10)的numpy数组数据集。每一行都是单次编码。我想将其传输到形状为(100,)的nd数组中,这样我将每个向量行都转换为一个表示非零索引的整数。是否有使用numpy或tensorflow进行此操作的快速方法?
问题答案:
正如Franck
Dernoncourt指出的那样,由于一个热编码只有一个单一的1,其余的是零,因此您可以在此特定示例中使用argmax。通常,如果要在numpy数组中查找值,则可能要查询numpy.where。此外,此堆栈交换问题:
由于一个热向量是一个全为0且一个为1的向量,因此您可以执行以下操作:
>>> import numpy as np
>>> a = np.array([[0,1,0,0],[1,0,0,0],[0,0,0,1]])
>>> [np.where(r==1)[0][0] for r in a]
[1, 0, 3]
这只是建立索引列表,每行索引为1。[0] [0]索引仅用于放弃返回的结构(具有数组的元组),np.where
该结构比您要求的要多。
对于任何特定的行,您只想索引到。例如,在第零行的索引1中找到1。
>>> np.where(a[0]==1)[0][0]
1