代码之家  ›  专栏  ›  技术社区  ›  Felix

字符串中的一个热点-获取uniques列表中的索引

  •  1
  • Felix  · 技术社区  · 6 年前

    有没有从字符串数组中提取索引的方便方法? 我想用numpy做一个简单的一次性热编码。我有一种自己编码的方法,但是首先我需要一个索引列表来编码。

    获取排序后的唯一元素很简单。

    >>> vals = np.array(['a', 'b', 'c', 'b', 'a'])
    >>> uniq = np.unique(vals)
    array(['a', 'b', 'c'], dtype='<U1')
    

    然后转换就会发生。首先我想用 list.index 使用基本的python列表,但这涉及到从 ndarray list 然后回来。我想还有更好的解决方案。

    我想到的是:

    idx = [np.where(uniq == v) for v in vals]
    

    但这会产生一个ND数组。

    对于预期产量自然:

    [0, 1, 2, 1, 0]
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Austin    6 年前

    设置 return_inverse=True 以下内容:

    vals = np.array(['a', 'b', 'c', 'b', 'a'])
    u, indices = np.unique(vals, return_inverse=True)
    
    print(u)  # ['a' 'b' 'c']
    print(indices)  # [0 1 2 1 0]