首页 > 解决方案 > Numpy - 创建序数类别嵌入

问题描述

我已将以下代码写入one-hot encode整数列表:

import numpy as np
a = np.array([1,2,3,4])

targets = np.zeros((a.size, a.max()))
targets[np.arange(a.size),a-1] = 1
targets

输出:

array([[1., 0., 0., 0.],
       [0., 1., 0., 0.],
       [0., 0., 1., 0.],
       [0., 0., 0., 1.]])

我想更改代码,以更好地适应我的序数类问题,以便输出为:

array([[1., 0., 0., 0.],
       [1., 1., 0., 0.],
       [1., 1., 1., 0.],
       [1., 1., 1., 1.]])

我怎样才能做到这一点?

标签: pythonnumpyordinal

解决方案


似乎您需要tril,这为您提供了下三角形。np.ones()使用(就像您使用一样)创建一个任意大小的数组np.zeros(),然后运行它np.tril()

import numpy as np
a = np.array([1,2,3,4])

targets = np.ones((a.size, a.max()))
targets = np.tril(targets)
targets

甚至更简单,使用tri()

import numpy as np
a = np.array([1,2,3,4])

targets = np.tri(a.size, a.max())
targets

推荐阅读