Файл: Лабораторная работа Знакомство с библиотеками 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])

Задание

  1. Вы работаете в группе ученых-климатологов, и одна из ваших ролей - принимать еженедельные данные о температуре и вводить их в массивы NumPy для последующего анализа. Датчик регистрирует температуру 4 раза в день в 0:00, 6:00, 12:00 и 18:00. Вам предоставляются данные за последние недели (с понедельника по пятницу) и вас просят создать массив NumPy.

Начните с импорта пакета numpy.

  1. Создайте массив температур, импортировав данные в 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

  1. Проверьте данные, выведя их в терминал.

Столбцы — это время, начиная с 0:00, а строки - это дни, начиная с понедельника, а значения представляют собой зарегистрированные температуры в это время в эти дни.

  1. Один из исследователей заметил, что датчик был неправильно обнулен, и все зарегистрированные температуры были на 3,0 градуса ниже нуля.

Исправьте массив так, чтобы показания температуры были точными, и сохраните их в Temperature_fixed.

  1. Другой исследователь спросил у вас значения температуры понедельника. Сохраните их в новом массиве monday_temperas.

  2. «Хммм, интересно, - бормочет исследователь, - можешь также дать мне данные за 6:00 утра по четвергам и пятницам?»

Сохраните эти данные в новом массиве thursday_friday_morning.

  1. Наконец, настойчивый исследователь теперь хочет, чтобы в течение недели были все высокие и низкие температуры.

Выберите все температуры ниже 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 решить следующие задачи:\



  1. Построить архимедову спираль:



Столбцы таблицы: n, , x, y.

Столбец n заполнить целыми числами по порядку от 0 до 96.

Остальные столбцы рассчитываются по формулам:



Для получения числа воспользоваться встроенной функцией pi модуля math.

Построить график по данным столбцов x и y.

  1. Построить улитку Паскаля:



Столбцы таблицы: 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

Далее самостоятельно:

  1. Переведите каждое значение долготы и широты в радианы, используя numpy.radians(x).

  2. Рассчитать расстояние d согласно формуле Гаверсинуса, приведенной выше.

  3. Не забудьте оператор return, который возвращает полученное расстояние.

  4. Проверьте работу вашей функции, введя:

>>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) - Отбрасывает дробную часть числа.
Список источников:

  1. Материалы codecademy.com

  2. Материалы https://numpy.org/

  3. Материалы https://www.pandoge.com/post/743