【问题标题】:Extracting element from a bitarray using indexes in a list使用列表中的索引从位数组中提取元素
【发布时间】:2016-12-22 21:05:18
【问题描述】:

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

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

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

我收到了错误

IndexError: Slice index out of range.

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

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

有人知道吗?

【问题讨论】:

    标签: python numpy bitarray


    【解决方案1】:

    您可以使用 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)
    

    【讨论】:

    • 原则上没问题,但是我遇到了一个新问题:我的文件对于 numpy.take (2Gb) 来说太大了,我遇到了内存错误
    猜你喜欢
    • 1970-01-01
    • 2017-04-15
    • 2020-03-08
    • 2018-03-04
    • 1970-01-01
    • 2021-05-13
    • 2018-12-24
    • 2011-02-06
    • 1970-01-01
    相关资源
    最近更新 更多