【问题标题】:(Numpy) Index list to boolean array(Numpy)布尔数组的索引列表
【发布时间】:2015-05-01 05:26:56
【问题描述】:

输入:

  1. 数组长度(整数)
  2. 索引(集或列表)

输出:

一个布尔值 numpy 数组,索引值为 1,其他索引值为 0。


例子:

输入:array_length=10, indexes={2,5,6}

输出:

[0,0,1,0,0,1,1,0,0,0]

这是我的一个简单实现:

def indexes2booleanvec(size, indexes):
    v = numpy.zeros(size)
    for index in indexes:
        v[index] = 1.0
    return v

有没有更优雅的实现方式?

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:

    一种方法是避免循环

    In [7]: fill = np.zeros(array_length)     #  array_length = 10
    
    In [8]: fill[indexes] = 1                 #  indexes = [2,5,6]
    
    In [9]: fill
    Out[9]: array([ 0.,  0.,  1.,  0.,  0.,  1.,  1.,  0.,  0.,  0.])
    

    【讨论】:

      【解决方案2】:

      另一种方法(一行):

      np.isin(np.arange(array_length), indexes)
      

      但是这比 Zero 的解决方案要慢。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-06
        • 2020-03-25
        • 2017-09-24
        • 2017-08-06
        • 2015-05-19
        • 2018-07-06
        • 2018-12-13
        • 2021-12-17
        相关资源
        最近更新 更多