使用列表中的索引从位数组中提取元素

Extracting element from a bitarray using indexes in a list

我得到了一个 BitArray 元素的索引列表。我要提取元素。

如果我在这个简单的例子上尝试经典方法

from bitstring import BitArray
barray = BitArray('0b101111011110101')
index = [1,2,3,4]
barray[index]

我收到错误

IndexError: Slice index out of range.

使用元组或numpy数组作为索引也是一样的。我看了文档和主要功能,对我来说很奇怪,但似乎不可能,我也不知道为什么。

似乎唯一的解决办法就是做一个循环,为了速度我想避免它。

有人知道吗?

你可以使用 np.take 将它们提取为 NumPy 布尔数组 -

np.take(barray,index)

样本运行-

In [156]: barray
Out[156]: BitArray('0b101111011110101')

In [157]: index
Out[157]: [1, 2, 3, 4]

In [158]: np.take(barray,index)
Out[158]: array([False,  True,  True,  True], dtype=bool)