繁体   English   中英

如何从phython中给定的整数列表创建布尔的多列列表?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM