正如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
0
我有一个形状为(100,10)的numpy数组数据集。每一行都是单次编码。我想将其传输到形状为(100,)的nd数组中,这样我将每个向量行都转换为一个表示非零索引的整数。是否有使用numpy或tensorflow进行此操作的快速方法?