In [477]: np.add.at(x,(idx[:,0],idx[:,1]), 1)
In [478]: x
Out[478]:
array([[0., 0., 0., 0., 0.],
[0., 2., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 1., 0.],
[0., 0., 0., 0., 0.]])
или эквивалентно
In [489]: np.add.at(x,tuple(idx.T), 1)
In [490]: x
Out[490]:
array([[0., 0., 0., 0., 0.],
[0., 2., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 1., 0.],
[0., 0., 0., 0., 0.]])
где:
In [491]: tuple(idx.T)
Out[491]: (array([1, 1, 3]), array([1, 1, 3]))
In [492]: x[tuple(idx.T)]
Out[492]: array([2., 2., 1.])