我有一个2d mxn数组A和另一个2D qxp数组B。我想在B中列出的每个坐标上给A赋值1。
我知道我首先可以得到b在轴= 0处的长度,然后编写一个循环来完成,例如A [B [i,0]] [b [i,1]] = 1;但是我正在处理一个大型数据集,我想看看是否有任何方法可以在没有for循环的情况下进行操作。
答案 0 :(得分:1)
您可以通过将B的列作为A的索引传递来直接分配值。不需要遍历B的行。
A[B[:,0],B[:,1]]=1
这是更详细的示例
A=np.zeros((4,4))
array([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
B=np.array([[2,1],[2,2],[0,2],[3,0]])
array([[2, 1],
[2, 2],
[0, 2],
[3, 0]])
# directly pass each of the columns of B as indices of A
A[B[:,0],B[:,1]] = 1
print(A)
array([[0., 0., 1., 0.],
[0., 0., 0., 0.],
[0., 1., 1., 0.],
[1., 0., 0., 0.]])