我想采取一个值的列表,并将其转换为一个表(2D-list)的0和1的,与一个列为源列表中的每一个唯一的数字和相同数量的行到原始。如果列索引与原始值-1匹配,则每行都将具有1。
我有完成这项任务的代码,但我想知道是否有更好/更快的方法来完成这项任务。(与下面的简化集相比,实际数据集有数百万个条目)
样本输入:
value_list = [1, 2, 1, 3, 6, 5, 4, 3]
期望输出:
output_table = [[1, 0, 0, 0, 0, 0],
[0, 1, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0],
[0, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 0, 1],
[0, 0, 0, 0, 1, 0],
[0, 0, 0, 1, 0, 0],
[0, 0, 1, 0, 0, 0]]
当前解决方案:
value_list = [1, 2, 1, 3, 6, 5, 4, 3]
max_val = max(value_list)
# initialize to table of 0's
a = [([0] * max_val) for i in range(len(value_list))]
# overwrite with 1's where required
for i in range(len(value_list)):
j = value_list[i] - 1
a[i][j] = 1
print(f'a = ')
for row in a:
print(f'{row}')
您可以尝试以下方法:
dummy_list = [0]*6
output_table = [dummy_list[:i-1] + [1] + dummy_list[i:] for i in value_list]
输出:
output_table = [[1, 0, 0, 0, 0, 0],
[0, 1, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0],
[0, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 0, 1],
[0, 0, 0, 0, 1, 0],
[0, 0, 0, 1, 0, 0],
[0, 0, 1, 0, 0, 0]]
你可以做到:
import numpy as np
value_list = [1, 2, 1, 3, 6, 5, 4, 3]
# create matrix of zeros
x = np.zeros(shape=(len(value_list), max(value_list)), dtype='int')
for i,v in enumerate(value_list):
x[i,v-1] = 1
print(x)
输出:
[[1 0 0 0 0 0]
[0 1 0 0 0 0]
[1 0 0 0 0 0]
[0 0 1 0 0 0]
[0 0 0 0 0 1]
[0 0 0 0 1 0]
[0 0 0 1 0 0]
[0 0 1 0 0 0]]
问题内容: 我正在尝试将一组转换为Python 2.6中的列表。我正在使用以下语法: 但是,我得到以下堆栈跟踪: 我怎样才能解决这个问题? 问题答案: 已经是清单了 你想要类似的东西吗 编辑:您的最后评论的输出 我想知道您是否做了这样的事情:
问题内容: 如何在Python中将列表转换为以空格分隔的字符串? 例如,我要转换此列表: 入弦 空间很重要。到目前为止,我不希望自己尝试过 问题答案: 您需要使用空格而不是空字符串来连接…
问题内容: 我使用一个外部模块(libsvm),该模块不支持numpy数组,仅支持元组,列表和字典。但是我的数据是二维二维数组。我如何以pythonic方式转换它,也就是没有循环。 问题答案: 您可以简单地将矩阵转换为,以证明:
在这里,我试图将转换为一个1D数组。
在我的Spring Boot项目中,我有两个类(实体和模型) 在模型中有一个列表 :
如何将bool in的输出从1和0转换为字符串,例如True或False。