Translate integers in a numpy array to a contiguous range 0…n

前端 未结 2 574
情深已故
情深已故 2020-12-04 03:42

I would like to translate arbitrary integers in a numpy array to a contiguous range 0...n, like this:

source: [2 3 4 5 4 3]
translating [2 3 4 5] -> [0 1          


        
2条回答
  •  借酒劲吻你
    2020-12-04 04:40

    IIUC you can simply use np.unique's optional argument return_inverse, like so -

    np.unique(source,return_inverse=True)[1]
    

    Sample run -

    In [44]: source
    Out[44]: array([2, 3, 4, 5, 4, 3])
    
    In [45]: np.unique(source,return_inverse=True)[1]
    Out[45]: array([0, 1, 2, 3, 2, 1])
    

提交回复
热议问题