首页 > 解决方案 > 谁能解释一下这个简单的 Python 代码?

问题描述

我有一个简单的函数,它返回零和一的矩阵。我不明白 line: out[range(n), vec] = 1 是如何工作的。向量 v 可以具有从 0 到 9 的值。

import numpy as np

def one_hot_encode(vec, vals=10):

    n = len(vec)
    out = np.zeros((n, vals))
    out[range(n), vec] = 1
    return out

v = [1,2,3,1,3,5,7,8,9,1,2,3,4,5,6,7,8,9,0,1,2,3,1,3,5,7,8,9,1,2,3]
one_hot_encode(v, 10)

标签: pythonnumpy

解决方案


行 line: out[range(n), vec] = 1 放置与 vec 值对应的行,即如果 vec 的第一个值为 1,则在 out 矩阵中第一行和第二列(值 +1)将被分配为 1。如果 4rt 值为 1,则第 4rt 行和第 2 列将被分配 1。


推荐阅读