【问题标题】:Create binary array from list of indexes in Python从 Python 中的索引列表创建二进制数组
【发布时间】:2021-07-20 18:58:37
【问题描述】:

我有一个索引列表,比如 [3,4,7,9]。创建二进制数组的最快方法是什么(在本例中为 [0,0,0,1,1,0,0,1,0,1])。 谢谢!

【问题讨论】:

  • 每个十进制数字对应于二进制数组中的索引 1。我可以使用“for”循环来做到这一点,但必须有更快的方法。

标签: python arrays indexing


【解决方案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.])

【讨论】:

    【解决方案2】:

    使用理解:

    indices = {3,4,7,9}
    output = [int(i in indices) for i in range(max(indices)+1)]
    

    【讨论】:

    • 这时间复杂度很差。 indices 应该是一个集合。
    • 非常好。谢谢!
    【解决方案3】:

    简单的列表理解就可以了:

    indices = {3, 4, 7, 9}
    [i in indices for i in range(10)]
    

    【讨论】:

      猜你喜欢
      • 2018-12-07
      • 2016-07-29
      • 1970-01-01
      • 2022-06-19
      • 1970-01-01
      • 2015-08-07
      • 1970-01-01
      • 1970-01-01
      • 2011-11-10
      相关资源
      最近更新 更多