【发布时间】:2021-07-20 18:58:37
【问题描述】:
我有一个索引列表,比如 [3,4,7,9]。创建二进制数组的最快方法是什么(在本例中为 [0,0,0,1,1,0,0,1,0,1])。 谢谢!
【问题讨论】:
-
每个十进制数字对应于二进制数组中的索引 1。我可以使用“for”循环来做到这一点,但必须有更快的方法。
我有一个索引列表,比如 [3,4,7,9]。创建二进制数组的最快方法是什么(在本例中为 [0,0,0,1,1,0,0,1,0,1])。 谢谢!
【问题讨论】:
使用 numpy:
l = [3,4,7,9]
m = np.zeros(max(l)+1)
m[l] = 1
>>> m
array([0., 0., 0., 1., 1., 0., 0., 1., 0., 1.])
【讨论】:
使用理解:
indices = {3,4,7,9}
output = [int(i in indices) for i in range(max(indices)+1)]
【讨论】:
indices 应该是一个集合。
简单的列表理解就可以了:
indices = {3, 4, 7, 9}
[i in indices for i in range(10)]
【讨论】: