正如Franck
Dernoncourt指出的那样,由于一个热编码只有一个单一的1,其余的是零,因此您可以在此特定示例中使用argmax。通常,如果要在numpy数组中查找值,则可能要查询numpy.where。此外,此堆栈交换问题:
是否有NumPy函数返回数组中某物的第一个索引?
由于一个热向量是一个全为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



