python - 如何根据以下规则转换矩阵中的向量
问题描述
我有一个长度为 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中实现这个?
解决方案
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)
推荐阅读
- python - 我将如何生成可重复的加密密钥?
- javascript - TypeScript / JavaScript:如何使用装饰器模式包装 Promise 对象
- php - 单击现有的href链接(wordpress)如何打开灯箱?
- php - 任何人都知道如何在 php 中打印此模式
- python-3.x - 在 6 次或更少的试验中猜一个随机数。连跑都不行
- asp.net-core - 我可以在 ASP.NET Core 中定义自己的“路径”应用设置吗?
- python - 镜像相似度
- python - 如何遍历数据框中的列并更新值?
- php - 使用 ajax 更新 php foreach 循环内的 td 值
- python - 如何将复合增长公式应用于包含负值的 Pandas 数据框