Construct two dimensional numpy array from indices and values of a one dimensional array

前端 未结 3 507
南旧
南旧 2020-12-11 17:17

Say I\'ve got

Y = np.array([2, 0, 1, 1])

From this I want to obtain a matrix X with shape (len(Y), 3). In this particular cas

相关标签:
3条回答
  • 2020-12-11 17:32

    Maybe:

    >>> Y = np.array([2, 0, 1, 1])
    >>> X = np.zeros((len(Y), 3))
    >>> X[np.arange(len(Y)), Y] = 1
    >>> X
    array([[ 0.,  0.,  1.],
           [ 1.,  0.,  0.],
           [ 0.,  1.,  0.],
           [ 0.,  1.,  0.]])
    
    0 讨论(0)
  • 2020-12-11 17:45
    Y = np.array([2, 0, 1, 1])
    new_array = np.zeros((len(Y),3))
    for i in range(len(Y)):
        new_array[i,Y[i]] = 1
    

    I think ... i dont think there is an easier way (but i might be wrong)

    0 讨论(0)
  • 2020-12-11 17:50

    To give a one-liner alternative to DSM's perfectly good answer:

    >>> Y = np.array([2, 0, 1, 1])
    >>> np.arange(3) == Y[:, np.newaxis]
    array([[False, False,  True],
           [ True, False, False],
           [False,  True, False],
           [False,  True, False]], dtype=bool)
    
    0 讨论(0)
提交回复
热议问题