使用列表中的索引从bitarray中提取元素

时间:2016-08-16 13:03:25

标签: python numpy bitarray

我得到了BitArray元素索引的列表。我想提取元素。

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

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

我收到了错误

IndexError: Slice index out of range.

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

似乎唯一的解决方案是做一个循环,我想避免速度。

有人有个主意吗?

1 个答案:

答案 0 :(得分:0)

那么你可以使用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)