Back

Explore Courses Blog Tutorials Interview Questions
+1 vote
3 views
in Python by (320 points)

I want to encode a 1-D numpy array:

x = array([1,0,3]) 

 As a 2-D 1-hot array

y = array([[0,1,0,0], [1,0,0,0], [0,0,0,1]])

Suggest me some faster technique other than looping. 

1 Answer

+2 votes
by (10.9k points)
edited by

@Anisha, Refer to the following code it may help.

>>> x = [1, 0, 3]

>>> z = np.max(x) + 1

>>> np.eye(z)[x]

array([[ 0.,  1., 0., 0.],

      [ 1., 0.,  0., 0.],

      [ 0., 0.,  0., 1.]])

Alernatively, you can use:

>>> x = np.array([1, 0, 3])

>>> z= np.zeros((3, 4))

>>> z[np.arange(3), x] = 1

>>> y

array([[ 0.,  1., 0., 0.],

      [ 1., 0.,  0., 0.],

      [ 0., 0.,  0., 1.]])

Related questions

0 votes
1 answer
0 votes
1 answer
0 votes
2 answers
0 votes
1 answer
asked Sep 17, 2019 in Python by Sammy (47.6k points)
Welcome to Intellipaat Community. Get your technical queries answered by top developers!

30.5k questions

32.6k answers

500 comments

108k users

Browse Categories

...