如标题所述,例如,给定2d numpy数组
a = np.array([[2,3,4,5],[12,4,5,7],[14,2,5,6],[12,3,4,6]])
idx = np.array([[0,2],[2,3],[1,3],[1,3]])
我想选择第一和第三个元素,从第一行中选择2、4,依此类推。所以最终的答案应该是
ans = [[2,4],
[5,7],
[2,6],
[3,6]]
我已经尝试了np.choose和np.take,但是我相信np.take会使数组变平,并且np.choose看起来并不像我期望的那样。
任何想法将不胜感激!非常感谢!
您可以在numpy中使用高级索引:
a[np.indices(idx.shape)[0], idx]
np.indices(idx.shape)[0]
在idx
和一起为您的列索引创建相应的行索引,它们形成高级索引。
输出:
[[2 4]
[5 7]
[2 6]
[3 6]]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句