如果输入为零,我想创建一个如下所示的数组:
[1,0,0,0,0,0,0,0,0,0]
Run Code Online (Sandbox Code Playgroud)
如果输入为5:
[0,0,0,0,0,1,0,0,0,0]
Run Code Online (Sandbox Code Playgroud)
对于上面我写道:
np.put(np.zeros(10),5,1)
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
有什么方法可以在一行中实现吗?
我有np矩阵,我想将其转换为3d数组,其中元素的热编码为第三维.有没有办法处理没有循环每一行,例如
a=[[1,3],
[2,4]]
Run Code Online (Sandbox Code Playgroud)
应该做成
b=[[1,0,0,0], [0,0,1,0],
[0,1,0,0], [0,0,0,1]]
Run Code Online (Sandbox Code Playgroud) 当我在我的机器学习项目上工作时,我正在寻找一行代码来将我的标签变成一个热门的向量.我在Reddit上遇到了来自u/benanne的这段代码.
np.eye(n_labels)[target_vector]
Run Code Online (Sandbox Code Playgroud)
例如,对于a target_vector = np.array([1, 4, 2, 1, 0, 1, 3, 2]),它返回一个热编码值:
np.eye(5)[target_vector]
Out:
array([[ 0., 1., 0., 0., 0.],
[ 0., 0., 0., 0., 1.],
[ 0., 0., 1., 0., 0.],
...,
[ 0., 1., 0., 0., 0.],
[ 0., 0., 0., 1., 0.],
[ 0., 0., 1., 0., 0.]])
Run Code Online (Sandbox Code Playgroud)
虽然它确实有效,但我不确定它是如何工作的或原因.