最好用一个例子来解释。
foo = np.array([
[0,0],
[0,1],
[1,0],
[1,1]
])
bar = np.array([
[10,12],
[5,11]
])
desired = np.stack((bar[:, 0][foo[:, 0]], bar[:, 1][foo[:, 1]]), axis = 1)
array([[10, 12],
[10, 11],
[ 5, 12],
[ 5, 11]])
因此,如果考虑foo的第一列,[0, 0, 1, 1]
并使用这些索引从bar的第一列中选择元素[10, 5]
,则会得到我想要的结果的第一列[10, 10, 5, 5]
。
问题是,我在弄清楚如何将其概括为支持未知数量的foo和bar的行和列时遇到麻烦(速度对我很重要)。
只需foo
对行索引使用整数索引,对列索引使用范围为范围的范围数组foo
-
bar[foo,np.arange(foo.shape[1])]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句