Random one-hot matrix in numpy

Viewed 4858

I want to make a matrix x with shape (n_samples, n_classes) where each x[i] is a random one-hot vector. Here's a slow implementation:

x = np.zeros((n_samples, n_classes))
J = np.random.choice(n_classes, n_samples)
for i, j in enumerate(J):
    x[i, j] = 1

What's a more pythonic way to do this?

2 Answers
Related