在索引向量中分配二维数组



给定 2d 数组k = np.zeros((M, N))和大小0, 1 .., M-1范围内的索引列表N称为places = np.random.random_integers(0, M-1, N)如何在我正在运行索引的places[i]索引中的每一列k中分配 1。我想以python紧凑风格实现这一点,并且没有任何循环

例子:

N = 5, M =3
places= 0, 0, 1, 1, 2

然后:

k = [1, 1, 0, 0, 0
     0, 0, 1, 1, 0
     0, 0, 0, 0, 1]
rslt = np.zeros((M, N))
for i, v in enumerate(places): rslt[v,i]=1

完整代码:

import numpy as np
N = 5
M=3
#places = np.random.random_integers(0, M-1, N)
places= 0, 0, 1, 1, 2
rslt = np.zeros((M, N))
for i, v in enumerate(places): rslt[v,i]=1
print(rslt)
Out [34]:
[[ 1.  1.  0.  0.  0.]
 [ 0.  0.  1.  1.  0.]
 [ 0.  0.  0.  0.  1.]]