2014-11-03 70 views
2

假设img是2维numpy数组。假设x和y是与img相同形状的整数值2维numpy数组。考虑:以任意维度对具有numpy数组的数组进行索引numpy数组

newImg = img[x, y] 

newImg现在是相同的形状的IMG 2维阵列,其中newImg [I,J] == IMG [X [I,J],Y [I,J]]对于所有的i和j。

我想将此过程概括为任意数量的维度。也就是说,让img是一个d维numpy数组,并把x [i]作为一个整数值的d维numpy数组,它的形状与img相同。我基本想要的是:

newImg = img[x[0], x[1], ..., x[d-1]] 

这显然是伪代码,并没有预期的工作。

我该怎么用NumPy做到这一点?

回答

1

你试过只是

newImg = img[x] 

看起来这应该工作!

我假设x是满足下列条件

len(x) == img.ndim 
all(a.shape == img.shape for a in x) 

这似乎符合你所描述的整数数组列表或元组。

+0

我不认为这很简单。下面有一个例子(这太大了,不适合这个评论。) – NLi10Me 2014-11-04 00:26:01

+0

哦,等等,我没有尝试x作为数组的元组。我会试试看。 – NLi10Me 2014-11-04 00:26:52

+0

对不起,数组的元组工作。请注意,这是解决方案。在我的问题中,我假设x是一个数组数组。元组工作。 – NLi10Me 2014-11-04 00:28:40