使用列表中的索引从位数组中提取元素
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)
我得到了一个 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)