У меня есть сотни тысяч логических массивов NumPy, которые я хотел бы использовать в качестве ключей к словарю. (Значения этого словаря - это количество раз, которое мы наблюдали за каждым из этих массивов.) Поскольку массивы NumPy не хэшируемы и не могут использоваться как ключи сами по себе. Я хотел бы сериализовать эти массивы как можно более эффективно.
У нас есть два определения эффективности, которые нужно адресовать, здесь:
Я стремлюсь найти хороший баланс между этими двумя конкурирующими интересами, однако для меня более важно эффективное использование памяти, и я готов пожертвовать временем вычислений.
Есть два свойства, которые Я надеюсь, что эта задача будет проще:
1
s и 0
s, битовая последовательность Есть ли эффективная структура данных Python (2.7 или, если возможно, 2.6), в которую я мог бы сериализовать их (возможно, какая-то структура байтов) , и не могли бы вы привести пример преобразования между массивом и этой структурой, а также из структуры обратно в исходный массив?
Обратите внимание, что нет необходимости хранить информацию о том, был ли каждый индекс True
или Неверно
; структуры, которая просто хранит индексы, в которых массив был Истинно
, будет достаточно для восстановления массива.
Достаточное решение будет работать для одномерного массива, но хорошее решение также будет работать для 2 -мерный массив, и отличное решение будет работать для массивов еще более высоких размерностей.