У меня есть два объекта битового массива (N.B. bitarray != BitArray), которые выглядят так:
a = bitarray('10010110')
b = bitarray('01001110')
Мне нужен новый битовый массив «c», который содержит элементы a по индексам, где элементы b равны 1. Так что
>> c = 0011
Я знаю, что делаю
b.search(bitarray('1'))
возвращает список интересующих меня индексов, но я не могу найти способ объединить битовый массив a со списком индексов.
Я знаю, что решение состоит в том, чтобы преобразовать a в список, использовать np.take для извлечения списка в соответствии со списком индексов и преобразовать результат в битовый массив. Тем не менее, это решение слишком требовательно (памяти и вычислительной мощности). Мой полный код представляет собой своего рода итерацию этой операции, и тест с массивом 1e6 занял около 10 секунд, что слишком много. Я должен работать с очень длинным массивом (5e9), поэтому я выбрал библиотеку битовых массивов. Насколько я понял, эта библиотека наиболее подходит с точки зрения оптимизации памяти.
Вот оно мое «списковое» решение
indexList=b.search(bitarray('1'))
c=bitarray((np.take(a.tolist(),indexList)).tolist())
Подробнее здесь: https://stackoverflow.com/questions/616 ... -in-python
Извлечь бит из битового массива согласно списку индексов в Python? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Python numpy: переупорядочить массив numpy по заданному списку индексов
Anonymous » » в форуме Python - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-