# How to convert one-hot encodings into integers?

As pointed out by Franck Dernoncourt, since a one hot encoding only has a single 1 and the rest are zeros, you can use argmax for this particular example. In general, if you want to find a value in a numpy array, you'll probabaly want to consult numpy.where. Also, this stack exchange question:

Is there a NumPy function to return the first index of something in an array?

Since a one-hot vector is a vector with all 0s and a single 1, you can do something like this:

```
>>> 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]
```

This just builds a list of the index which is 1 for each row. The [0][0] indexing is just to ditch the structure (a tuple with an array) returned by `np.where`

which is more than you asked for.

For any particular row, you just want to index into a. For example in the zeroth row the 1 is found in index 1.

```
>>> np.where(a[0]==1)[0][0]
1
```

Simply use `np.argmax(x, axis=1)`

Example:

```
import numpy as np
array = np.array([[0, 1, 0, 0], [0, 0, 0, 1]])
print(np.argmax(array, axis=1))
> [1 3]
```

You can use numpy.argmax or tf.argmax. Example:

```
import numpy as np
a = np.array([[0,1,0,0],[1,0,0,0],[0,0,0,1]])
print('np.argmax(a, axis=1): {0}'.format(np.argmax(a, axis=1)))
```

output:

```
np.argmax(a, axis=1): [1 0 3]
```

You may also want to look at `sklearn.preprocessing.LabelBinarizer.inverse_transform`

.