NumPy有unravel_index()的逆函数吗?

15 投票
4 回答
5858 浏览
提问于 2025-04-16 06:40

numpy.unravel_index() 这个函数的作用是接收一个数组的形状和一个扁平的索引,然后返回一个元组,这个元组表示在这个数组中的位置。有人在问,是否有一个反向的操作?我可以手动计算出来,但感觉应该有一个内置的函数可以做到这一点...

4 个回答

2

答案在于 numpy.ndarray.strides。你可以查看这个链接了解更多信息:http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.strides.html

4

这个可以用:

def ravel_index(pos, shape):
    res = 0
    acc = 1
    for pi, si in zip(reversed(pos), reversed(shape)):
        res += pi * acc
        acc *= si
    return res
10

自从 numpy 1.6.0(2011年5月)发布以来,NumPy里有一个内置的函数叫做 ravel_multi_index

这个函数可以把一组索引数组转换成一组扁平的索引,同时对多重索引应用边界模式。

(这在用户Bi Rico的评论中也提到过,但其实应该作为一个答案出现)

撰写回答