繁体   English   中英

(Numpy) 索引列表到布尔数组

[英](Numpy) Index list to boolean array

输入:

  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

有没有更优雅的方法来实现这个?

一种方法是避免循环

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.])

另一种方法(在一行中):

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

然而,这比 Zero 的解决方案慢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM