[英]How do I create a list from one list of integers and one list of booleans? (Python)
[英]How to create multiple column list of booleans from given list of integers in phython?
我是Python的新手。 我想做以下。
输入:大小为n的整数的列表。 每个整数的范围是0到3。
输出:一个多列(大小为n )的多列(本例中为4列,范围为0-3 = 4中的整数)。 新列表的每一行将具有与Input list的整数值相对应的列为True,其余列为False。
例如,输入列表:[0,3,2,1,1,2],大小= 6,每个整数的范围是0-3
输出清单:
Row 0: True False False False
Row 1: False False False True
Row 2: False False True False
Row 3: False True False False
Row 4: False True False False
Row 5: False False True False
现在,我可以从4列开始。 遍历输入列表,并如下创建它,
output_columns[].
for i in Input list:
output_column[i] = True
Create an output numpy list with output columns
这是在Python中执行此操作的最佳方法吗? 特别是用于创建numpy列表作为输出。
如果是,我如何在最后合并output_columns []以创建numpy多维列表,并将每个维作为output_columns的列。
如果没有,用Python做到这一点的最佳方法(最省时)是什么?
谢谢,
这是在Python中执行此操作的最佳方法吗?
不,更Pythonic的也许是最好的方法是使用简单的广播比较,如下所示:
In [196]: a = np.array([0, 3, 2, 1, 1, 2])
In [197]: r = list(range(0, 4))
In [198]: a[:,None] == r
Out[198]:
array([[ True, False, False, False],
[False, False, False, True],
[False, False, True, False],
[False, True, False, False],
[False, True, False, False],
[False, False, True, False]])
您正在创建一个所谓的一热向量(矩阵中的每一行都是一热向量,这意味着只有一个值为True)。
mylist = [0, 3, 2, 1, 1, 2]
one_hot = np.zeros((len(mylist), 4), dtype=np.bool)
for i, v in enumerate(mylist):
one_hot[i, v] = True
输出量
array([[ True, False, False, False],
[False, False, False, True],
[False, False, True, False],
[False, True, False, False],
[False, True, False, False],
[False, False, True, False]], dtype=bool)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.