【发布时间】:2014-10-16 13:46:48
【问题描述】:
我有两个数组。
"a",一个二维的 numpy 数组。
import numpy.random as npr
a = array([[5,6,7,8,9],[10,11,12,14,15]])
array([[ 5, 6, 7, 8, 9],
[10, 11, 12, 14, 15]])
“idx”,一个 3d numpy 数组,由三个索引变体组成,我想用它来索引“a”。
idx = npr.randint(5, size=(nsamp,shape(a)[0], shape(a)[1]))
array([[[1, 2, 1, 3, 4],
[2, 0, 2, 0, 1]],
[[0, 0, 3, 2, 0],
[1, 3, 2, 0, 3]],
[[2, 1, 0, 1, 4],
[1, 1, 0, 1, 0]]])
现在我想用“idx”中的索引对“a”进行3次索引,以获得一个对象,如下所示:
array([[[6, 7, 6, 8, 9],
[12, 10, 12, 10, 11]],
[[5, 5, 8, 7, 5],
[11, 14, 12, 10, 14]],
[[7, 6, 5, 6, 9],
[11, 11, 10, 11, 10]]])
天真的“a[idx]”不起作用。关于如何做到这一点的任何想法? (我使用 Python 3.4 和 numpy 1.9)
【问题讨论】:
-
这已经被解释了很多次了。你必须告诉索引关于索引到第二维的索引,所以它会像
a[indx, [[[0], [1]]]]...
标签: python python-3.x numpy multidimensional-array