使用另一个2D数组作为索引将值分配给2D数组

时间:2019-05-24 16:36:03

标签: python arrays python-3.x

我有一个2d mxn数组A和另一个2D qxp数组B。我想在B中列出的每个坐标上给A赋值1。

我知道我首先可以得到b在轴= 0处的长度,然后编写一个循环来完成,例如A [B [i,0]] [b [i,1]] = 1;但是我正在处理一个大型数据集,我想看看是否有任何方法可以在没有for循环的情况下进行操作。

1 个答案:

答案 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.]])