【问题标题】:Indexing numpy arrays with numpy arrays, in arbitrary dimension在任意维度上用 numpy 数组索引 numpy 数组
【发布时间】:2014-11-03 23:53:36
【问题描述】:

假设 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 数组,并取 x[i],对于 range(0, d) 中的 i,是一个与 img 形状相同的整数值 d 维 numpy 数组。我基本上想要的是:

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

这显然是伪代码,预计不会工作。

如何使用 NumPy 做到这一点?

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:

    你试过简单吗

    newImg = img[x]
    

    看起来应该可以了!

    我假设x 是满足以下条件的整数数组的列表或元组

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

    这似乎与您所描述的相符。

    【讨论】:

    • 我觉得没那么简单。下面有一个例子(它太大了,不适合这个评论。)
    • 哦,等等,我还没有尝试将 x 作为数组的元组。我会试试看。
    • 对不起,数组的元组有效。请注意,这就是解决方案。在我的问题中,我假设 x 是一个数组数组。元组有效。
    猜你喜欢
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-27
    • 2011-07-07
    相关资源
    最近更新 更多