Введение
В этом практическом занятии будут рассмотрены некоторые из продвинутых функций NumPy, в том числе линейная алгебра, генерация случайных чисел и массивы с масками.
💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал
В этом практическом занятии будут рассмотрены некоторые из продвинутых функций NumPy, в том числе линейная алгебра, генерация случайных чисел и массивы с масками.
NumPy имеет полный набор функций для операций линейной алгебры. Вот несколько примеров:
Откройте 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, включая линейную алгебру, генерацию случайных чисел и массивы с масками. Эти функции полезны для многих приложений, в том числе анализа данных и научных вычислений.
Продолжайте трудиться!