Файл: Лабораторная работа Знакомство с библиотеками NumPy.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 05.12.2023
Просмотров: 119
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Лабораторная работа 1.Знакомство с библиотеками NumPy Для работы с наборами данных используется Python, известный как NumPy, что означает числовой Python.NumPy имеет множество применений, в том числе:
ЗаданиеИмпортируйте результаты учащегося по второму тесту из CSV test_2.csv (создайте файл самостоятельно, в котором будут содержаться данные: 79, 100, 86, 93, 91) в массив. Сохраните массив с именем test_2.Операции с массивами NumPyКак правило, массивы NumPy более эффективны, чем списки. Одна из причин заключается в том, что они позволяют выполнять поэлементные операции. Поэлементная операция позволяет быстро выполнять операцию, например сложение, над каждым элементом массива.Давайте сравним, как добавить число к каждому значению в списке Python и массиве NumPy:# With a listl = [1, 2, 3, 4, 5]l_plus_3 = []for i in range(len(l)): l_plus_3.append(l[i] + 3)# With an arraya = np.array(l)a_plus_3 = a + 3Как мы видим, если бы мы добавили 3 к каждому числу в списке, нам пришлось бы использовать цикл for. С массивом мы можем просто добавить 3. То же самое верно для вычитания, умножения и деления.Возможно использовать массивы NumPy, чтобы найти квадрат или квадратный корень каждого значения.Возведение каждого значения в квадрат:>>> a ** 2array([ 1, 4, 9, 16, 25, 36])(Примечание: ** - это обозначение степени в Python. Например, 3 в квадрате можно вычислить с помощью 3 ** 2.)>>> np.sqrt(a)array([ 1, 1.41421356, 1.73205081, 2, 2.23606798, 2.44948974])Задание
Двумерные массивыВ Python можно создавать списки, состоящие из других списков. Точно так же в NumPy можно создать массив массивов. Если все массивы, составляющие больший массив, имеют одинаковый размер, то у него есть специальное имя: двумерный массив.В предыдущих упражнениях результаты тестов хранились в отдельных одномерных массивах для каждого теста:test_1 = np.array([92, 94, 88, 91, 87])test_2 = np.array([79, 100, 86, 93, 91])test_3 = np.array([87, 85, 72, 90, 92])Но возможно также сохранить все эти данные в одном двумерном массиве:np.array([[92, 94, 88, 91, 87], [79, 100, 86, 93, 91], [87, 85, 72, 90, 92]])Здесь каждая строка представляет тест, а каждый столбец представляет учащегося. Это позволяет хранить все данные в одном массиве без потери какой-либо структуры.Двумерный массив — это список списков, каждый из которых имеет одинаковое количество элементов. Вот несколько примеров, которые не являются двумерными массивами.Этот код будет исполнен без ошибки, но он не создаст двумерный массив, потому что списки имеют разное количество элементов:np.array([[29, 49, 6], [77, 1]])Этот код выдаст ошибку, потому что [] для внешних списков отсутствует:np.array([68, 16, 73], [61, 79, 30])Задание
Так же массивы NumPy поддерживают отрицательные индексы, которые отсчитываются с противоположного конца массива и начинаются с -1. Это особенно полезно, нужно получить доступ к последнему или двум элементам массива:>>> a[-1]11>>> a[-2]0Если мы необходимо выбрать несколько элементов в массиве, можно определить диапазон, например [1: 3], который выберет все элементы от [1] до [3], включая a[1], но исключая а [3].>>> a[1:3]array([2, 7])Точно так же, если необходимо выбрать все элементы перед [3], мы бы использовали:>>> a[:3]array([5, 2, 7])Также возможно использовать отрицательные индексы для выбора нескольких элементов. Допустим, мы хотим выбрать последние 3 элемента в массиве:>>> a[-3:]array([7, 0, 11])Обратите внимание: когда выбирается несколько элементов, мы получаем массив.Задание
Джереми хочет знать, сколько он набрал во втором тесте.Выберите результат из массива test_2 и сохраните его в переменной jeremy_test_2.
Рассмотрим массивa = np.array([[32, 15, 6, 9, 14], [12, 10, 5, 23, 1], [2, 16, 13, 40, 37]])Возможно выбрать определенные элементы, используя их индексы:>>> a[2,1]16Допустим, необходимо выделить весь столбец, тогда нужно вставить «:» в качестве индекса строки:# selects the first column>>> a[:,0]array([32, 12, 2])То же самое работает, если необходимо выделить всю строку:# selects the second row>>> a[1,:]array([12, 10, 5, 23, 1])Возможно еще больше сузить диапазон и выбрать диапазон из определенной строки:# selects the first three elements of the first row>>> a[0,0:3]array([32, 15, 6])Задание
student_scores = np.array([[92, 94, 88, 91, 87], [79, 100, 86, 93, 91], [87, 85, 72, 90, 92]])Таня хочет знать, насколько хорошо она сдала третий тест. Выберите ее результат из массива и сохраните его в tanya_test_3.
-
Эффективная работа с большим количеством номеров одновременно -
Генерация случайных чисел -
Выполнение множества различных числовых функций (например, вычисление sin, cos, tan, mean, median и т. Д.)
-
Представьте, что вы учитель и вам нужно следить за результатами тестов своего ученика. По первому тесту ученики получили следующие баллы:
ЗаданиеИмпортируйте результаты учащегося по второму тесту из CSV test_2.csv (создайте файл самостоятельно, в котором будут содержаться данные: 79, 100, 86, 93, 91) в массив. Сохраните массив с именем test_2.Операции с массивами NumPyКак правило, массивы NumPy более эффективны, чем списки. Одна из причин заключается в том, что они позволяют выполнять поэлементные операции. Поэлементная операция позволяет быстро выполнять операцию, например сложение, над каждым элементом массива.Давайте сравним, как добавить число к каждому значению в списке Python и массиве NumPy:# With a listl = [1, 2, 3, 4, 5]l_plus_3 = []for i in range(len(l)): l_plus_3.append(l[i] + 3)# With an arraya = np.array(l)a_plus_3 = a + 3Как мы видим, если бы мы добавили 3 к каждому числу в списке, нам пришлось бы использовать цикл for. С массивом мы можем просто добавить 3. То же самое верно для вычитания, умножения и деления.Возможно использовать массивы NumPy, чтобы найти квадрат или квадратный корень каждого значения.Возведение каждого значения в квадрат:>>> a ** 2array([ 1, 4, 9, 16, 25, 36])(Примечание: ** - это обозначение степени в Python. Например, 3 в квадрате можно вычислить с помощью 3 ** 2.)>>> np.sqrt(a)array([ 1, 1.41421356, 1.73205081, 2, 2.23606798, 2.44948974])Задание
-
Оценки учащегося по третьему тесту хранятся в массиве test_3.
-
Давайте найдем среднее значение результатов тестов каждого учащегося, чтобы рассчитать их итоговую оценку за семестр. Начните с добавления трех массивов и сохраните ответ в переменной total_grade. Не забудьте использовать измененные баллы для третьего теста. -
Теперь разделите total_grade на количество пройденных тестов, чтобы найти средний балл для каждого ученика. Сохраните ответ в переменной final_grade. -
Выведите результат в консоль
Двумерные массивыВ Python можно создавать списки, состоящие из других списков. Точно так же в NumPy можно создать массив массивов. Если все массивы, составляющие больший массив, имеют одинаковый размер, то у него есть специальное имя: двумерный массив.В предыдущих упражнениях результаты тестов хранились в отдельных одномерных массивах для каждого теста:test_1 = np.array([92, 94, 88, 91, 87])test_2 = np.array([79, 100, 86, 93, 91])test_3 = np.array([87, 85, 72, 90, 92])Но возможно также сохранить все эти данные в одном двумерном массиве:np.array([[92, 94, 88, 91, 87], [79, 100, 86, 93, 91], [87, 85, 72, 90, 92]])Здесь каждая строка представляет тест, а каждый столбец представляет учащегося. Это позволяет хранить все данные в одном массиве без потери какой-либо структуры.Двумерный массив — это список списков, каждый из которых имеет одинаковое количество элементов. Вот несколько примеров, которые не являются двумерными массивами.Этот код будет исполнен без ошибки, но он не создаст двумерный массив, потому что списки имеют разное количество элементов:np.array([[29, 49, 6], [77, 1]])Этот код выдаст ошибку, потому что [] для внешних списков отсутствует:np.array([68, 16, 73], [61, 79, 30])Задание
-
В статистике часто используются двумерные массивы для представления набора выборок. Например, если мы подбрасываем монету, мы можем представить каждую орел как 1, а каждый решка как 0.
-
Мы снова запускаем эксперимент и получаем следующий результат: решка, решка, орел, орел, орел. Создайте новый массив, который представляет оба результата как один эксперимент. Сохраните новый массив в coin_toss_again.
Так же массивы NumPy поддерживают отрицательные индексы, которые отсчитываются с противоположного конца массива и начинаются с -1. Это особенно полезно, нужно получить доступ к последнему или двум элементам массива:>>> a[-1]11>>> a[-2]0Если мы необходимо выбрать несколько элементов в массиве, можно определить диапазон, например [1: 3], который выберет все элементы от [1] до [3], включая a[1], но исключая а [3].>>> a[1:3]array([2, 7])Точно так же, если необходимо выбрать все элементы перед [3], мы бы использовали:>>> a[:3]array([5, 2, 7])Также возможно использовать отрицательные индексы для выбора нескольких элементов. Допустим, мы хотим выбрать последние 3 элемента в массиве:>>> a[-3:]array([7, 0, 11])Обратите внимание: когда выбирается несколько элементов, мы получаем массив.Задание
-
Вернемся к результатам тестов наших учеников. В следующей таблице показаны все три массива тестов, выровненные по именам учащихся.
| | Tanya__Manual__Adwoa__Jeremy__Cody'>Tanya | Manual | Adwoa | Jeremy | Cody |
| test_1 | 92 | 94 | 88 | 91 | 87 |
| test_2 | 79 | 100 | 86 | 93 | 91 |
| test_3 | 87 | 85 | 72 | 90 | 92 |
-
Вы хотите сравнить, как справились Manual и Adwoa в первом тесте.
Рассмотрим массивa = np.array([[32, 15, 6, 9, 14], [12, 10, 5, 23, 1], [2, 16, 13, 40, 37]])Возможно выбрать определенные элементы, используя их индексы:>>> a[2,1]16Допустим, необходимо выделить весь столбец, тогда нужно вставить «:» в качестве индекса строки:# selects the first column>>> a[:,0]array([32, 12, 2])То же самое работает, если необходимо выделить всю строку:# selects the second row>>> a[1,:]array([12, 10, 5, 23, 1])Возможно еще больше сузить диапазон и выбрать диапазон из определенной строки:# selects the first three elements of the first row>>> a[0,0:3]array([32, 15, 6])Задание
-
Результаты тестов наших студентов теперь хранятся в двумерном массиве student_scores. В первой строке хранятся результаты первого теста, во второй строке - второго теста, а в третьей строке - третьего теста, как показано в следующей таблице:
| | Tanya | Manual | Adwoa | Jeremy | Cody |
| test_1 | 92 | 94 | 88 | 91 | 87 |
| test_2 | 79 | 100 | 86 | 93 | 91 |
| test_3 | 87 | 85 | 72 | 90 | 92 |
-
У вас запланировано родительское собрание с родителями Коди, и вы хотели бы иметь под рукой все его результаты тестов.