Лабораторная работа 3 Операции над массивами и создание структурированных массивов


Пример задачи: разбиение данных на интервалы



бет5/10
Дата09.05.2022
өлшемі0,56 Mb.
#33776
түріЛабораторная работа
1   2   3   4   5   6   7   8   9   10
Пример задачи: разбиение данных на интервалы

Можно использовать эти идеи для эффективного разбиения данных с целью построения гистограммы вручную. Например, пусть у нас есть 1000 значений и нам необходимо быстро выяснить, как они распределяются по массиву интервалов. Это можно сделать с помощью метода at() универсальных функций следующим образом:



Полученные числа отражают количество точек в каждом из интервалов, другими словами, гистограмму (рис. 3):





Рис. 3. Вычисленная вручную гистограмма


Получать каждый раз гистограмму таким образом нет необходимости. Библиотека Matplotlib предоставляет процедуру plt.hist(), которая делает то же самое одной строкой кода:

Эта функция создаст практически точно такую же диаграмму, как на рис. 3. Для расчета разбиения по интервалам библиотека Matplotlib использует функцию np.histogram, выполняющую вычисления, очень похожие на сделанные нами. Давайте сравним их:



Наш собственный однострочный алгоритм работает в несколько раз быстрее, чем оптимизированный алгоритм из библиотеки NumPy! Как это возможно? Если мы заглянем в исходный код процедуры np.histogram, то увидим, что она гораздо сложнее про­стого поиска-и-подсчета, выполненного нами. Дело в том, что алгоритм из библи­отеки NumPy более гибок, потому что разработан с ориентацией на более высокую производительность при значительном увеличении количества точек данных:



Это сравнение демонстрирует нам, что эффективность алгоритма почти всегда непростой вопрос. Эффективный для больших наборов данных алгоритм не всегда окажется оптимальным вариантом для маленьких, и наоборот. Но преимущество самостоятельного программирования этого алгоритма заключается в том, что, получив понимание работы подобных простых методов, вы сможете «строить» из этих «кирпичиков» очень интересные варианты пользовательского поведения. Ключ к эффективному использованию языка Python в приложениях, требующих обработки больших объемов данных, заключается в том, чтобы знать о существовании удобных процедур, таких как np.histogram, и сферах их использования. Кроме того, нужно знать, как применять низкоуровневую функциональность при необходимости в узконаправленном поведении.





Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   10




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет