Математические игры с NumPy

PythonBeginner
Практиковаться сейчас

Введение

В рамках этого испытания вам предстоит попрактиковаться в использовании модуля NumPy на языке Python. Вы реализуете несколько распространенных функций для работы с массивами NumPy, охватывающих фундаментальные математические операции и преобразования структур данных. Все необходимые файлы уже созданы и доступны в проводнике слева.

Это испытание (Challenge), которое отличается от обычного практического руководства тем, что вам нужно выполнить задачу самостоятельно, а не просто следовать пошаговым инструкциям. Испытания обычно сложнее обычных лабораторных работ. Если вы столкнетесь с трудностями, вы можете обсудить их с Labby или изучить готовое решение. Статистика показывает, что это испытание продвинутого уровня с процентом успешного прохождения 50%. При этом оно получило 97% положительных отзывов от учащихся.

Поэлементное умножение

Ваша первая задача — создать функцию, которая выполняет поэлементное умножение двух массивов NumPy. Это означает, что каждый элемент первого массива умножается на соответствующий ему элемент во втором массиве.

Задание

  • Допишите функцию multiply_arrays в файле multiply_arrays.py.

Требования

  • Функция должна называться multiply_arrays.
  • Она должна принимать два массива NumPy, a и b, в качестве входных данных.
  • Она должна возвращать новый массив NumPy, являющийся результатом поэлементного умножения a и b.
  • Входные массивы всегда будут иметь одинаковую форму (shape).

Пример

После реализации функции запустите скрипт, чтобы проверить результат:

python3 multiply_arrays.py

Вывод:

Input a: [1 2 3]
Input b: [4 5 6]
Element-wise multiplication result: [4 10 18]
Expected: [4 10 18]
✨ Проверить решение и практиковаться

Матричное умножение

Далее вам необходимо реализовать матричное умножение. В отличие от поэлементного умножения, матричное умножение следует правилам линейной алгебры и требует, чтобы внутренние размерности двух матриц были согласованы.

Задание

  • Допишите функцию matrix_multiply в файле matrix_multiply.py.

Требования

  • Функция должна называться matrix_multiply.
  • Она должна принимать два массива NumPy, a и b, в качестве входных данных.
  • Она должна возвращать новый массив NumPy, являющийся результатом матричного произведения a и b.
  • Входные массивы будут иметь подходящие формы для матричного умножения.

Пример

После реализации функции запустите скрипт, чтобы проверить результат:

python3 matrix_multiply.py

Вывод:

Input matrix a:
[[1 2]
 [3 4]]
Input matrix b:
[[5 6]
 [7 8]]
Matrix multiplication result:
[[19 22]
 [43 50]]
Expected:
[[19 22]
 [43 50]]
✨ Проверить решение и практиковаться

Транспонирование массива

На этом этапе вы напишете функцию для транспонирования массива NumPy. Транспонирование массива меняет местами его строки и столбцы.

Задание

  • Допишите функцию transpose_array в файле transpose_array.py.

Требования

  • Функция должна называться transpose_array.
  • Она должна принимать один массив NumPy a в качестве входных данных.
  • Она должна возвращать транспонированную версию входного массива.

Пример

После реализации функции запустите скрипт, чтобы проверить результат:

python3 transpose_array.py

Вывод:

Original array:
[[1 2 3]
 [4 5 6]]
Transposed array:
[[1 4]
 [2 5]
 [3 6]]
Expected:
[[1 4]
 [2 5]
 [3 6]]
✨ Проверить решение и практиковаться

Изменение формы массива

Теперь вы создадите функцию для изменения формы (reshape) массива NumPy. Изменение формы меняет размерности массива без изменения содержащихся в нем данных. Общее количество элементов должно оставаться неизменным.

Задание

  • Допишите функцию reshape_array в файле reshape_array.py.

Требования

  • Функция должна называться reshape_array.
  • Она должна принимать массив NumPy a и кортеж shape в качестве входных данных.
  • Она должна возвращать новый массив с данными из a, но с новыми размерностями, указанными в shape.

Пример

После реализации функции запустите скрипт, чтобы проверить результат:

python3 reshape_array.py

Вывод:

Original array: [1 2 3 4 5 6]
New shape: (2, 3)
Reshaped array:
[[1 2 3]
 [4 5 6]]
Expected:
[[1 2 3]
 [4 5 6]]
✨ Проверить решение и практиковаться

Вычисление евклидова расстояния

Евклидово расстояние — это стандартный способ измерения расстояния между двумя точками по прямой. Ваша задача — реализовать функцию, которая вычисляет это расстояние между двумя одномерными массивами NumPy.

Формула евклидова расстояния между двумя векторами a и b выглядит следующим образом:

d(a, b) = \sqrt{\sum\_{i=1}^{n}(a_i - b_i)^2}

Задание

  • Допишите функцию euclidean_distance в файле euclidean_distance.py.

Требования

  • Функция должна называться euclidean_distance.
  • Она должна принимать два одномерных массива NumPy, a и b, одинаковой длины.
  • Она должна возвращать одно число с плавающей точкой, представляющее евклидово расстояние между ними.

Пример

После реализации функции запустите скрипт, чтобы проверить результат:

python3 euclidean_distance.py

Вывод:

Point a: [1 2 3]
Point b: [4 5 6]
Euclidean distance: 5.196152422706632
Expected: 5.196152422706632
✨ Проверить решение и практиковаться

Резюме

В этом испытании вы закрепили навыки выполнения фундаментальных операций в NumPy. Вы реализовали функции для поэлементного и матричного умножения, транспонирования и изменения формы массивов, а также для вычисления евклидова расстояния. Эти навыки критически важны для анализа данных, машинного обучения и научных вычислений на языке Python.