给定 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.]]