LINUX.ORG.RU

История изменений

Исправление 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.