【问题标题】:NumPy: generalize one-hot encoding to k-hot encodingNumPy:将 one-hot 编码推广到 k-hot 编码
【发布时间】:2018-02-06 12:30:44
【问题描述】:

我正在使用此代码对值进行一次性编码:

idxs = np.array([1, 3, 2])
vals = np.zeros((idxs.size, idxs.max()+1))
vals[np.arange(idxs.size), idxs] = 1

但我想将其推广到 k-hot 编码(vals 的形状相同,但每行可以包含 k 个)。

不幸的是,我不知道如何从每行索引多个列。我试过vals[0:2, [[0, 1], [3]]从第一行选择第一列和第二列,从第二行选择第三列,但它不起作用。

【问题讨论】:

    标签: numpy


    【解决方案1】:

    它叫advanced-indexing

    从第一行中选择第一列和第二列,从第二行中选择第三列

    您只需要在单独的可迭代对象(元组、列表)中传递相应的行和列:

    In [9]: a
    Out[9]: 
    array([[0, 1, 2, 3, 4],
           [5, 6, 7, 8, 9]])
    
    In [10]: a[[0, 0, 1],[0, 1, 3]]
    Out[10]: array([0, 1, 8])
    

    【讨论】:

    • 最后一个问题——NumPy 有什么功能可以将[[1, 3], [2], [0, 2]] 变成[0, 0, 1, 2, 2]
    • @user1518183 不。这背后的逻辑是什么?
    • 对,没有任何意义。
    猜你喜欢
    • 1970-01-01
    • 2017-06-21
    • 2021-04-14
    • 1970-01-01
    • 2017-02-16
    • 2018-01-26
    • 2021-11-02
    • 2020-09-18
    • 2019-07-14
    相关资源
    最近更新 更多