Python函数在二进制数组中查找1的索引

Ale*_*x T 5 python numpy

我有一个看起来像这样的数组

[1, 0, 1 , 0 , 0, 1]
Run Code Online (Sandbox Code Playgroud)

我想得到那些有 1 的索引。所以在这里我会得到一个数组[0, 2 , 5] ,然后基于它我会创建一个新数组,它接受这些数字并用它们对 2 求幂所以最终数组是

[2**0, 2**2, 2**5]
Run Code Online (Sandbox Code Playgroud)

有没有办法尽快写出来?

Reb*_*que 5

您可以在列表理解中使用 enumerate:

a = [1, 0, 1 , 0 , 0, 1]
b = [2**idx for idx, v in enumerate(a) if v]
b
Run Code Online (Sandbox Code Playgroud)

输出:

[1, 4, 32]
Run Code Online (Sandbox Code Playgroud)