我是 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]])
