我有一个形状为(100,10)的numpy数组数据集。每一行都是单次编码。我想将其传输到形状为(100,)的nd数组中,这样我将每个向量行都转换为一个表示非零索引的整数。是否有使用numpy或tensorflow进行此操作的快速方法?
最佳答案
正如Franck Dernoncourt所指出的,由于一个热编码只有一个单一的1,其余的是零,因此您可以在此特定示例中使用argmax。通常,如果要在numpy数组中查找值,则可能要查询numpy.where。此外,此堆栈交换问题:
Is there a NumPy function to return the first index of something in an array?
由于一个热向量是一个全为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
关于python - 如何将一键编码转换为整数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42497340/