Файл: Лабораторная работа Знакомство с библиотеками NumPy.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 05.12.2023
Просмотров: 22
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
>>> a = np.array([10, 2, 2, 4, 5, 3, 9, 8, 9, 7])
>>> a > 5
array([True, False, False, False, False, False, True, True, True, True], dtype=bool)
Затем мы можем использовать логические операторы для оценки и выбора элементов на основе определенных критериев. Чтобы выбрать все элементы из предыдущего массива, которые больше 5, мы должны написать следующее:
>>> a[a > 5]
array([10, 9, 8, 9, 7])
Мы также можем комбинировать логические утверждения для дальнейшего уточнения наших критериев. Для этого мы помещаем каждый оператор в круглые скобки и используем логические операторы, такие как & (и) и | (или).
В нашем примере мы можем использовать комбинированные операторы, чтобы найти элементы, которые больше пяти или меньше двух:
>>> a[(a > 5) | (a < 2)]
array([10, 9, 8, 9, 7])
Задание
-
Вы работаете в группе ученых-климатологов, и одна из ваших ролей - принимать еженедельные данные о температуре и вводить их в массивы NumPy для последующего анализа. Датчик регистрирует температуру 4 раза в день в 0:00, 6:00, 12:00 и 18:00. Вам предоставляются данные за последние недели (с понедельника по пятницу) и вас просят создать массив NumPy.
Начните с импорта пакета numpy.
-
Создайте массив температур, импортировав данные в CSV-файл temperature_data.csv
(CSV на основе данных Национального управления океанических и атмосферных исследований). CSV содержит данные:
43.6, 45.1, 58.8, 53
47, 44, 58.3, 52.6
46.7, 44.2, 57.9, 52.2,
46.5, 44.1, 57.6, 51.9,
46.2, 43.9, 57.2, 51.5
-
Проверьте данные, выведя их в терминал.
Столбцы — это время, начиная с 0:00, а строки - это дни, начиная с понедельника, а значения представляют собой зарегистрированные температуры в это время в эти дни.
-
Один из исследователей заметил, что датчик был неправильно обнулен, и все зарегистрированные температуры были на 3,0 градуса ниже нуля.
Исправьте массив так, чтобы показания температуры были точными, и сохраните их в Temperature_fixed.
-
Другой исследователь спросил у вас значения температуры понедельника. Сохраните их в новом массиве monday_temperas. -
«Хммм, интересно, - бормочет исследователь, - можешь также дать мне данные за 6:00 утра по четвергам и пятницам?»
Сохраните эти данные в новом массиве thursday_friday_morning.
-
Наконец, настойчивый исследователь теперь хочет, чтобы в течение недели были все высокие и низкие температуры.
Выберите все температуры ниже 50 или выше 60 градусов и сохраните их в новом массиве temperature_extremes.
Математические функции NumPy
В библиотеке NumPy существует множество полезных функций математики, в том числе тригонометрические, в которых X – угол, заданный в радианах.:
sin(x) – возвращает тригонометрический синус.
cos(x) - Тригонометрический косинус.
tan(x) - Тригонометрический тангенс.
arcsin(x) - Обратный тригонометрический синус.
arccos(x) - Обратный тригонометрический косинус.
arctan(x) - Обратный тригонометрический тангенс.
radians(x) - Преобразует градусную меру угла в радианную.
В библиотеке NumPy существуют Гиперболические функции, в которых X – угол, заданный в радианах:
sinh(x) - Гиперболический синус.
cosh(x) - Гиперболический косинус.
tanh(x) - Гиперболический тангенс.
arcsinh(x) - Обратный гиперболический синус.
arccosh(x) - Обратный гиперболический косинус.
arctanh(x) - Обратный гиперболический тангенс.
Данные функции часто применяются в рамках математического моделирования, в том числе в теории нечетких множеств.
Задание
В рамках данного задания понадобится знание библиотеки matplotlib. Matplotlib — это библиотека Python, используемая для создания диаграмм и графиков.
Прежде чем работать с Matplotlib, необходимо импортировать в разрабатываемый модуль Python.
>>from matplotlib import pyplot as plt
Или:
>>import matplotlib.pyplot as plt
Линейные графики полезны для визуализации того, как переменная изменяется с течением времени.
Некоторые возможные данные, которые будут отображаться в виде линейного графика:
-
средние цены на бензин за последнее десятилетие -
вес человека за последние пару месяцев -
средняя температура по долготе на разных широтах
Используя методы Matplotlib, следующий код создаст простой линейный график с помощью .plot () и отобразит его с помощью .show ():
>>x_values = [0, 1, 2, 3, 4]
>>y_values = [0, 1, 4, 9, 16]
>>plt.plot(x_values, y_values)
>>plt.show()
-
x_values - это переменная, содержащая список значений x для каждой точки на нашем линейном графике. -
y_values - это переменная, содержащая список значений y для каждой точки на нашем линейном графике. -
plt - это имя, которое мы дали модулю Matplotlib, который мы импортировали в верхней части кода. -
plt.plot (x_values, y_values) создаст линейный график -
plt.show () фактически отобразит график
Теперь с помощью линейных графиков и функций NumPy решить следующие задачи:\
-
Построить архимедову спираль:
Столбцы таблицы: n, , x, y.
Столбец n заполнить целыми числами по порядку от 0 до 96.
Остальные столбцы рассчитываются по формулам:
Для получения числа воспользоваться встроенной функцией pi модуля math.
Построить график по данным столбцов x и y.
-
Построить улитку Паскаля:
Столбцы таблицы: n, , x, y.
Столбец n заполнить целыми числами по порядку от 0 до 24.
Остальные столбцы рассчитываются по формулам:
Построить график по данным столбцов x и y.
Задание для закрепления:
Необходимо разработать функцию, которая позволяет рассчитывать расстояние между двумя точка, зная их координаты (широту и долготу).
Поскольку Земля имеет форму, приближенную к сфере, расстояние между двумя географическими объектами на ней мы будем искать по формуле Гаверсинуса, которая в преобразованном виде выглядит следующим образом:
где:
r – радиус Земли в километрах;
φ1, φ2 – широта в радианах;
λ1, λ2 – долгота в радианах;
На вход функции будет подавать широту и долготу двух географических точек в градусах. Поэтому, в самой функции необходимо реализовать перевод из градусов в радианы. Для этого в NumPy используется следующая функция:
numpy.radians(x). X – значение в градусах.
Для начала зададим функцию:
>>def distance(lat_1, lon_1, lat_2, lon_2):
В качестве входных параметров используются долгота и широта географических точек.
Зададим радиус земли:
>>radius_earth = 6371
Далее самостоятельно:
-
Переведите каждое значение долготы и широты в радианы, используя numpy.radians(x). -
Рассчитать расстояние d согласно формуле Гаверсинуса, приведенной выше. -
Не забудьте оператор return, который возвращает полученное расстояние. -
Проверьте работу вашей функции, введя:
>>print(distance(57.37, 39.51, 57.46, 40.55))
Должно получится примерно 63 км.
Для справки функции округления NumPy
around(a[, decimals, out]) - Равномерное округление до указанной позиции.
round_(a[, decimals, out]) - Эквивалентна around().
rint(x) - Округляет до ближайшего целого.
fix(x[, out]) - Округляет до ближайшего к нулю целого числа.
floor(x) - Округление к меньшему ("пол").
ceil(x) - Округление к большему ("потолок").
trunc(x) - Отбрасывает дробную часть числа.
Список источников:
-
Материалы codecademy.com -
Материалы https://numpy.org/ -
Материалы https://www.pandoge.com/post/743