История изменений
Исправление question4, (текущая версия) :
Тормоза, скорее всего из-за срезов и методов. Почему не сделать data.view(‘>u4’) или сразу не назначить данным нужный тип?
Насколько велик оверхэд от срезов, если они не тасуют байты, а просто выделяют невыровненный кусок из цепочки?
Применить view(‘>u4’) ко всему массиву нельзя, так как там перемешаны данные произвольной длины: во-первых, нет гарантии, что длина data кратна 4 байтам, во-вторых, адрес 4-байтного числа в массиве может быть не кратен 4. view() не позволяет задавать начало и длину. Поэтому я пробовал np.frombuffer(), который позволяет, но отличий в скорости не заметил.
np.cumsum(data, dtype=‘u4’)
Похоже, оно. Спасибо! (Удалённое сообщение писал в состоянии переутомления на 60-м километре велопоездки.) Только не ‘u4’, а ‘>u4’, эти данные вдобавок ко всем радостям ещё и big-endian :)
Как в markdown пропустить пункт в нумерованном списке?
Я для этого переключаюсь на Lorcode.
Исходная версия question4, :
Тормоза, скорее всего из-за срезов и методов. Почему не сделать data.view(‘>u4’) или сразу не назначить данным нужный тип?
Насколько велик оверхэд от срезов, если они не тасуют байты, а просто выделяют невыровненный кусок из цепочки?
Применить view(‘>u4’) ко всему массиву нельзя, так как там перемешаны данные произвольной длины: во-первых, нет гарантии, что длина data кратна 4 байтам, во-вторых, адрес 4-байтного числа в массиве может быть не кратен 4. view() не позволяет задавать начало и длину. Поэтому я пробовал np.frombuffer(), который позволяет, но отличий в скорости не заметил.
np.cumsum(data, dtype=‘u4’)
Похоже, оно. Спасибо! (Удалённое сообщение писал в состоянии переутомления на 40-м километре велопоездки.) Только не ‘u4’, а ‘>u4’, эти данные вдобавок ко всем радостям ещё и big-endian :)
Как в markdown пропустить пункт в нумерованном списке?
Я для этого переключаюсь на Lorcode.