有没有简单的方法来使用索引数组索引沿最后维度的numpy多维数组?例如,形状为(10, 10, 20)
的数组a
。假设我有一个形状为(10, 10)
的索引b
的数组,因此结果将为c[i, j] = a[i, j, b[i, j]]
。沿着最后维度的索引numpy nd数组
我试过下面的例子:
a = np.ones((10, 10, 20))
b = np.tile(np.arange(10) + 10, (10, 1))
c = a[b]
但是,这并不工作,因为它然后尝试指数像a[b[i, j], b[i, j]]
,这是不一样的a[i, j, b[i, j]]
。等等。有没有一个简单的方法来做到这一点,而不诉诸于循环?
只是为了确保我的理解正确,你想'C [I,J] = A [1, j,b [i,j]]' – mgilson 2014-12-03 17:00:18
@mgilson是的。应该做得更清楚。 – tiago 2014-12-03 18:19:41
这通常是'c = a [np.arange(b.shape [0]),np.arange(b.shape [1]),b]'完成的,但我希望有更好的方法。 – 2014-12-03 20:31:48