Оказывается, мои догадки совершенно неверны.Но в комментариях есть интересные сведения о том, почему они таковы.
Здесь я приведу два тривиальных улучшения, которые, мы надеемся, могут немного улучшить производительность во время выполнения.
Во-первых, ваша справочная таблица имеетнатуральные числа в качестве ключей.Это список.
lookup = [
b'\x00\x00\x00\x00\x00\x00\x00\x00',
b'\x00\x00\x00\x00\x00\x00\x00\x01',
b'\x00\x00\x00\x00\x00\x00\x01\x00',
...
b'\x01\x01\x01\x01\x01\x01\x01\x01',
]
Во-вторых, вместо создания списка и последующего ввода его для присоединения используйте generator
.
def remap(data):
return b''.join(lookup[byte] for byte in data)
Но вы можете проверить идеи вэтот вопрос также:
Преобразование целого числа в двоичное в python
Возможно, это также соответствует вашим потребностям, но дает список вместо bstring.
https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.unpackbits.html#numpy.unpackbits