如何将1d数组转换为逻辑矩阵

Mar*_*ank 9 python numpy

在python/numpy中是否有任何bulid-in函数可以转换为array = [1, 3, 1, 2]这样的东西:

array = [[0, 1, 0, 0], 
        [0, 0, 0, 1], 
        [0, 1, 0, 0], 
        [0, 0, 1, 0]]
Run Code Online (Sandbox Code Playgroud)

ssh*_*124 12

您可以创建一个单位矩阵,然后使用索引创建一个新的重新排序的矩阵:

>>> a = np.eye(4)
[Out]: array([[1., 0., 0., 0.],
              [0., 1., 0., 0.],
              [0., 0., 1., 0.],
              [0., 0., 0., 1.]])

>>> indices = [1, 3, 1, 2]
>>> a[indices]
[Out]: array([[0., 1., 0., 0.],
              [0., 0., 0., 1.],
              [0., 1., 0., 0.],
              [0., 0., 1., 0.]])
Run Code Online (Sandbox Code Playgroud)