根据来自另一个数组NumPy的索引赋值

dwbf0jvd  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(143)

我有一个这样的指数数组:

idx = np.array([3,4,1], [0,0,0], [1,4,1], [2,0,2]]

和形状为4x5的零数组A
我想把Aidx中的所有索引都设为1
对于上面的示例,最终的数组应该是:

[[0,1,0,1,1],  # values at index 3,4,1 are 1
 [1,0,0,0,0],  # value at index 0 is 1
 [0,1,0,0,1],  # values at index 1,4 are 1
 [1,0,1,0,0]]  # values at index 0,2 are 1

如何在NumPy中做到这一点?

lokaqttq

lokaqttq1#

使用花哨的索引:

A = np.zeros((4, 5), dtype=int)

A[np.arange(len(idx))[:,None], idx] = 1

numpy.put_along_axis

A = np.zeros((4, 5), dtype=int)

np.put_along_axis(A, idx, 1, axis=1)

更新A

array([[0, 1, 0, 1, 1],
       [1, 0, 0, 0, 0],
       [0, 1, 0, 0, 1],
       [1, 0, 1, 0, 0]])

相关问题