美文网首页NumpyPython学习Tips
numpy.unravel_index()函数的用法

numpy.unravel_index()函数的用法

作者: 运动小爽 | 来源:发表于2018-12-24 13:42 被阅读0次

    numpy.unravel_index()函数的作用是获取一个/组int类型的索引值在一个多维数组中的位置。

    官方文档

    Screenshot from 2018-12-24 13-26-00.png

    举个例子:

    我有一个ndarray数组A,A.shape = [3, 3, 3, 2],A.dtype=np.int64。如何找到A中最大元素的索引???

    yan@yanubuntu:~$ python
    Python 2.7.12 (default, Nov 12 2018, 14:36:49) 
    [GCC 5.4.0 20160609] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import numpy as np
    >>> A=np.random.randint(1,100,size=(3,3,3,2))
    >>> A
    array([[[[25, 36],
             [78, 83],
             [97, 11]],
    
            [[32, 37],
             [14, 10],
             [72, 92]],
    
            [[34, 72],
             [90, 61],
             [62, 31]]],
    
    
           [[[59, 41],
             [53, 12],
             [33, 62]],
    
            [[72, 25],
             [ 9, 19],
             [64, 93]],
    
            [[76, 42],
             [98, 21],
             [31, 40]]],
    
    
           [[[58, 27],
             [64, 78],
             [52, 34]],
    
            [[63, 45],
             [79,  3],
             [78,  2]],
    
            [[ 5, 31],
             [84, 15],
             [64, 38]]]])
    

    我可以使用np.argmax()函数来完成:

    >>> ind_max=np.argmax(A)
    >>> ind_max
    32
    

    此时得到的最大值索引是将A进行flatten成一维数组之后的索引值,如何得到最大元素在原数组A中的索引呢?这就是np.unravel_index()函数做的事情:

    >>> ind_max_src=np.unravel_index(ind_max, A.shape)
    >>> ind_max_src
    (1, 2, 1, 0)
    >>> A[1,2,1,0]
    98
    

    这里np.unravel_index()函数的第一个参数indices除了可以是int型标量值,还可以是一个int型数组,当indices为int型数组时,就是对数组中的每一个元素执行相同的运算过程。具体输出格式参考官方文档中的Examples

    另外一个函数numpy.ravel_multi_index(),执行和np.unravel_index()函数相反的运算。

    相关文章

      网友评论

        本文标题:numpy.unravel_index()函数的用法

        本文链接:https://www.haomeiwen.com/subject/ilxzkqtx.html