由于您希望
1每行一个,因此可以
arange(len(s))沿第一个轴使用索引,而
s沿第二个轴使用:
s = [4,3,1,0,5]n = len(s)k = 6m = np.zeros((n, k))m[np.arange(n), s] = 1m=> array([[ 0., 0., 0., 0., 1., 0.], [ 0., 0., 0., 1., 0., 0.], [ 0., 1., 0., 0., 0., 0.], [ 1., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0., 1.]])m.nonzero()=> (array([0, 1, 2, 3, 4]), array([4, 3, 1, 0, 5]))
可以认为这是使用索引(0,4),然后是(1,3),然后是(2,1),(3,0),(4,5)。



