【发布时间】:2021-05-20 05:48:09
【问题描述】:
我有一个 1D numpy 数组,我们称之为 labels。该数组的每个元素都是一个数字 (0...9)。我想将 labels 数组转换为 2D numpy 零数组,我们称之为 y_train。新的二维数组使得对于元素 labels[i],y_train 的第 ith 行在索引 label[i] 等于 1.0 。可以做到这一点的一种方法是遍历 labels 数组。见下文
>>> labels = [1, 5, 3, 9, 4]
>>> y_train = np.zeros((5, 10))
>>> for i in range(len(labels)):
y_train[i][labels[i]] = 1.0
>>> y_train
array([[0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],
[0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
[0., 0., 0., 0., 1., 0., 0., 0., 0., 0.]])
这段代码 sn-p 描述了我想要实现的目标。 所以,我的主要问题是如何使用 numpy 对这个操作进行矢量化以加快计算速度?
【问题讨论】:
-
虽然我怀疑这样做并不难,但有一个适用于 Keras 和 Scipy 的热门编码功能(以防万一也适用于您)。
标签: python numpy numpy-ndarray data-processing