首页 > 解决方案 > 如何根据以下规则转换矩阵中的向量

问题描述

我有一个长度为 N 的列向量 y,其中包含一组整数 (1,2,3....K)。我想要一个大小为 N x K 的 1 和 0 的矩阵,如下所示:

如果向量 y 中的数字对应于列索引,则矩阵为 1。否则为零。

举个例子更好

 y = [0,1,2,1]

预期产出

M = [[1, 0, 0],
     [0, 1, 0],
     [0, 0, 1]
     [0, 1, 0]]

我怎样才能在python中实现这个?

标签: pythonnumpy

解决方案


y = [0,1,2,1]
k = 3

arr = np.zeros((len(y),k))

for row, i in zip(arr, y):
    row[i]=1

print(arr)

不使用 Numpy

y = [0,1,2,1]
k = 3

arr = [([0]*k).copy() for _ in range(len(y))]

for row, i in zip(arr, y):
    row[i]=1

print(arr)

推荐阅读