Python 用numpy数组索引numpy数组,任意维
假设img是一个二维numpy数组。还假设x和y是与img形状相同的整数值二维numpy数组。考虑:Python 用numpy数组索引numpy数组,任意维,python,arrays,numpy,Python,Arrays,Numpy,假设img是一个二维numpy数组。还假设x和y是与img形状相同的整数值二维numpy数组。考虑: newImg = img[x, y] newImg现在是一个与img形状相同的二维数组,其中newImg[i,j]==img[x[i,j],y[i,j]]表示所有i和j 我想把这个过程推广到任意数量的维度。也就是说,假设img是一个d维numpy数组,取范围(0,d)内的i的x[i]为与img形状相同的整数值d维numpy数组。我基本上想要的是: newImg = img[x[0], x[1]
newImg = img[x, y]
newImg现在是一个与img形状相同的二维数组,其中newImg[i,j]==img[x[i,j],y[i,j]]表示所有i和j
我想把这个过程推广到任意数量的维度。也就是说,假设img是一个d维numpy数组,取范围(0,d)内的i的x[i]为与img形状相同的整数值d维numpy数组。我基本上想要的是:
newImg = img[x[0], x[1], ..., x[d-1]]
这显然是伪代码,预计不会起作用
我怎样才能用NumPy做到这一点呢?你试过了吗
newImg = img[x]
看起来这应该管用
我假设x
是满足以下条件的整数数组的列表或元组
len(x) == img.ndim
all(a.shape == img.shape for a in x)
这似乎与你描述的相符 我觉得没那么简单。下面有一个例子(它太大了,不能放在这个评论中。)哦,等等,我还没有尝试过将x作为数组的元组。我来试试。对不起,数组的元组可以工作。注意,这就是解决方案。在我的问题中,我假设x是一个数组的数组。元组有效。