Высокоуровневые темы NumPy

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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

Линейная алгебра с использованием NumPy

NumPy имеет полный набор функций для операций линейной алгебры. Вот несколько примеров:

Откройте Python-интерпретатор

Откройте Python-интерпретатор, введя следующую команду в терминале.

python3

Скалярное произведение

Скалярное произведение двух массивов можно вычислить с использованием функции np.dot(). Скалярное произведение двух массивов A и B определяется как сумма произведений соответствующих элементов A и B.

import numpy as np

## создайте два массива
a = np.array([1, 2])
b = np.array([3, 4])

## вычислите скалярное произведение
dot_product = np.dot(a, b)

print(dot_product) ## Вывод: 11

Умножение матриц

Умножение матриц можно выполнить с использованием оператора @ или функции np.matmul().

Пожалуйста, внимательно изучите следующие примеры.

## создайте две матрицы
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

## умножение матриц
C = A @ B

print(C) ## Вывод: [[19 22], [43 50]]

Вы также можете получить результаты по-другому.

## создайте две матрицы
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

## умножение матриц
C = np.matmul(A,B)

print(C) ## Вывод: [[19 22], [43 50]]

Определитель и обратная матрица

Определитель и обратная матрица можно вычислить с использованием функций np.linalg.det() и np.linalg.inv() соответственно.

## создайте матрицу
A = np.array([[1, 2], [3, 4]])

## вычислите определитель и обратную матрицу
det_A = np.linalg.det(A)
inv_A = np.linalg.inv(A)

print(det_A) ## Вывод: -2.0
print(inv_A) ## Вывод: [[-2.   1. ], [ 1.5 -0.5]]

Упражнение

Теперь轮到您构造两个数组,并使用np.dot()函数计算点积。使用@np.matmul()计算矩阵乘法,并使用np.linalg.det()np.linalg.inv()函数计算矩阵行列式和逆矩阵。

Генерация случайных чисел

NumPy предоставляет несколько функций для генерации случайных чисел. Вот несколько примеров:

Генерация случайных чисел

Функция np.random.rand() может быть использована для генерации случайных чисел в диапазоне от 0 до 1.

## сгенерировать матрицу 2x2 случайных чисел
a = np.random.rand(2, 2)

print(a) ## Вывод: [[0.43584547 0.37752558], [0.08936734 0.65526767]]

Генерация случайных целых чисел

Функция np.random.randint() может быть использована для генерации случайных целых чисел между двумя заданными числами.

## сгенерировать массив случайных целых чисел между 1 и 10
a = np.random.randint(1, 10, size=(3, 3))

print(a) ## Вывод: [[8 7 3], [3 3 7], [8 8 7]]

Генерация нормального распределения

Функция np.random.normal() может быть использована для генерации чисел из нормального распределения.

## сгенерировать массив чисел из нормального распределения
a = np.random.normal(0, 1, size=(2, 2))

print(a) ## Вывод: [[ 1.28418331 -0.90564647], [-0.76477896  1.69903421]]

Упражнение

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

Маскированные массивы

Маскированные массивы - это массивы, к которым прикреплена маска. Маска - это массив булевых значений, которые показывают, какие элементы массива должны быть замаскированы (скрыты). NumPy предоставляет модуль np.ma для работы с маскированными массивами.

Создание маскированного массива

Маскированный массив можно создать с использованием функции np.ma.masked_array().

## создать массив с замаскированными значениями
a = np.ma.masked_array([1, 2, 3, 4], mask=[True, False, False, True])

print(a) ## Вывод: [-- 2 3 --]

Применение маски

Маску можно применить к массиву с использованием функции np.ma.masked_where().

## создать массив
a = np.array([1, 2, 3, 4])

## создать маску
mask = a > 2

## применить маску
b = np.ma.masked_where(mask, a)

print(b) ## Вывод: [1 2 -- --]

Маскирование недействительных значений

Маскированные массивы можно использовать для обработки недействительных значений, таких как NaN (не число) или бесконечности.

## создать массив с некоторыми недействительными значениями
a = np.array([1, np.nan, np.inf, 4])

## создать маскированный массив
b = np.ma.masked_invalid(a)

print(b) ## Вывод: [1.0 -- -- 4.0]

Упражнение

Теперь, пожалуйста, используйте модуль np.ma, предоставляемый numoy, для завершения создания маскированного массива. В то же время используйте функцию np.ma.masked_where() для применения маски к массиву, и наконец, используйте np.ma.masked_invalid() для обработки недействительных значений. Пожалуйста, завершите это упражнение.

Резюме

Поздравляем с завершением этого эксперимента!

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

Продолжайте трудиться!