我有两个数组,一个是索引对的矩阵,
a = array([[[0,0],[1,1]],[[2,0],[2,1]]], dtype=int)
另一个是要在这些索引处访问的数据矩阵
b = array([[1,2,3],[4,5,6],[7,8,9]])
而且我希望能够使用a的索引来获取的条目b
。只是做:
>>> b[a]
不起作用,因为它为中的每个条目都给出了一行b a
,即
array([[[[1,2,3],
[1,2,3]],
[[4,5,6],
[4,5,6]]],
[[[7,8,9],
[1,2,3]],
[[7,8,9],
[4,5,6]]]])
当我想在的最后一个轴上使用索引对a
给出两个索引时b
:
array([[1,5],[7,8]])
有没有一种干净的方法可以执行此操作,还是需要以相应的方式重塑和合并列b
的列a
?
在我的实际问题a
中,大约有500万个条目,并且b
是100 x 100,我想避免for循环。
实际上,这可行:
b[a[:, :, 0],a[:, :, 1]]
给array([[1, 5], [7, 8]])
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句