## Question

Asked By – James Atwood

Given a 1D array of indices:

```
a = array([1, 0, 3])
```

I want to one-hot encode this as a 2D array:

```
b = array([[0,1,0,0], [1,0,0,0], [0,0,0,1]])
```

**Now we will see solution for issue: Convert array of indices to one-hot encoded array in NumPy **

## Answer

Create a zeroed array `b`

with enough columns, i.e. `a.max() + 1`

.

Then, for each row `i`

, set the `a[i]`

th column to `1`

.

```
>>> a = np.array([1, 0, 3])
>>> b = np.zeros((a.size, a.max() + 1))
>>> b[np.arange(a.size), a] = 1
>>> b
array([[ 0., 1., 0., 0.],
[ 1., 0., 0., 0.],
[ 0., 0., 0., 1.]])
```

This question is answered By – YXD

**This answer is collected from stackoverflow and reviewed by FixPython community admins, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 **