Skip to main content
 首页 » 编程设计

python之如何从 python 中给定的整数列表创建 bool 值的多列列表

2025年05月04日24虾米哥

我是 Python 新手。我想做以下事情。

输入:大小为 n 的整数列表。每个整数都在 0 到 3 的范围内。

输出:多列(在本例中为 4 列,整数范围为 0-3 = 4)大小为 n 的 numpy 列表。新列表的每一行都将与输入列表的整数值对应的列为 True,其余列为 False。

例如Input list : [0, 3, 2, 1, 1, 2], size = 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 执行此操作的最佳(最省时的方法)是什么?

谢谢,

请您参考如下方法:

Is this the best way to do this in 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]])