Python function to find indexes of 1s in binary array and

前端 未结 3 968
走了就别回头了
走了就别回头了 2021-01-21 07:45

I have an array which looks like this

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

And I want to get those indexes that have 1 in it. So here I would get an array of <

相关标签:
3条回答
  • 2021-01-21 08:04

    Here's one compact way -

    2**np.where(a)[0]
    

    Sample run -

    In [83]: a = np.array([1, 0, 1 , 0 , 0, 1])
    
    In [84]: 2**np.where(a)[0]
    Out[84]: array([ 1,  4, 32])
    
    0 讨论(0)
  • 2021-01-21 08:07

    There is np.where, np.argwhere, np.nonzero and np.flatnonzero. Take your pick.

    np.where and np.nonzero are as far as I know equivalent, only there is also a three argument version of where that does something different. np.argwhere is the transpose and np.flatnonzero gives flat indices.

    0 讨论(0)
  • 2021-01-21 08:12

    you could use enumerate in a list comprehension:

    a = [1, 0, 1 , 0 , 0, 1]
    b = [2**idx for idx, v in enumerate(a) if v]
    b
    

    output:

    [1, 4, 32]
    
    0 讨论(0)
提交回复
热议问题