我有 2 个数组:
-image是 NxN 数组,
-indices是 Mx2 数组,其中最后一个维度将有效索引存储到image.
我想在加1image在该指数的每一次出现indices。
似乎numpy.add.at(image, indices, 1)应该可以解决问题,除了我无法对其执行二维索引image:
image = np.zeros((5,5), dtype=np.int32)
indices = np.array([[1,1], [1,1], [3,3]])
np.add.at(image, indices, 1)
print(image)
Run Code Online (Sandbox Code Playgroud)
结果:
[[0 0 0 0 0]
[4 4 4 4 4]
[0 0 0 0 0]
[2 2 2 2 2]
[0 0 0 0 0]]
Run Code Online (Sandbox Code Playgroud)
想要的结果:
[[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]]
Run Code Online (Sandbox Code Playgroud)
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.]])
Run Code Online (Sandbox Code Playgroud)
或等效地
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.]])
Run Code Online (Sandbox Code Playgroud)
在哪里:
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.])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
758 次 |
| 最近记录: |