1 在由另一个 numpy 数组给出的特定列索引处的全零 numpy 数组的每一行中

1 in each row of an all zeros numpy array at particular column index given by another numpy array

我有一个给定大小的数组,例如全为零的 4x4,

a = np.zeros((4,4))

并且我想在另一个数组给出的列索引处的每一行中放置 1

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

所以结果数组应该是这样的,

a = 
1   0   0   0
0   1   0   0
0   0   1   0
0   1   0   0

给定大小 (mx1).

的大数组 (mxn) 如何执行此操作

谢谢您,并致以最诚挚的问候,

使用 zip():

遍历 a 中的行和 b 中的值
for row, idx in zip(a, b):
    row[idx] = 1

您可以使用这种索引二维数组的简单方法:

>>> a[np.arange(len(a)), b] = 1
>>> a
array([[1., 0., 0., 0.],
       [0., 1., 0., 0.],
       [0., 0., 1., 0.],
       [0., 1., 0., 0.]])