为了账号安全,请及时绑定邮箱和手机立即绑定

将 One-Hot 编码矩阵编码为单数组整数编码

将 One-Hot 编码矩阵编码为单数组整数编码

GCT1015 2024-01-27 14:56:01
我有一个现有的矩阵:array([[0, 1, 0, ..., 0, 1, 0],       [0, 0, 1, ..., 0, 0, 1],       [1, 0, 0, ..., 0, 0, 0],       [0, 0, 0, ..., 1, 0, 0]])我想对这些行进行编码,这样我就得到一个 (1, columns) 数组,其中的整数对应于哪一行value == 1预期输出[3, 1, 2, ..., 4, 1, 2]边缘情况(加)如果您想提供更多帮助,我可能会遇到矩阵如下所示的情况:array([[0, 1, 0, ..., 0, 1, 0],       [0, 0, 0, ..., 0, 0, 1],       [1, 0, 0, ..., 0, 0, 0],       [0, 1, 0, ..., 1, 0, 0]])您可以看到第 1 列和第 2 列(从 0 开始索引)有 2 个值 1 或根本没有任何值。在这些情况下,我希望它做的是:填充两行 -> 返回该组合的新值(例如 5,6,7)没有填充行 -> 返回一个新值(例如 0)
查看完整描述

1 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

对于第一个问题:


np.argmax(arr, axis=0) + 1

对于扩展问题:


def get_idx(x):

    ret = np.where(x)

    return ret[0] + 1 if len(ret[0]) else np.array([0])


[get_idx(a[:,i]) for i in range(a.shape[1])]


# out:

# [array([3]), array([1, 4]), array([0]), array([4]), array([1]), array([2])]


查看完整回答
反对 回复 2024-01-27
  • 1 回答
  • 0 关注
  • 31 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信