В мире анализа данных и научных вычислений библиотека Python NumPy является мощным инструментом. Он предоставляет широкий набор функций для эффективной работы с многомерными массивами. Одной из таких функций является np.apply_along_axis()
. В этом сообщении блога мы погрузимся в третье измерение и рассмотрим различные методы использования np.apply_along_axis()
для управления многомерными массивами в Python. Так что пристегните ремни и приготовьтесь стать профессионалом в обращении с массивами!
Метод 1: применение функции к одной оси
Функция np.apply_along_axis()
позволяет нам применить заданную функцию к определенной оси многомерного массива. В качестве примера рассмотрим 3D-массив формы (2, 3, 4):
import numpy as np
def sum_of_elements(arr):
return np.sum(arr)
arr_3d = np.array([[[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]],
[[13, 14, 15, 16],
[17, 18, 19, 20],
[21, 22, 23, 24]]])
result = np.apply_along_axis(sum_of_elements, axis=0, arr=arr_3d)
print(result)
Выход:
[[14 16 18 20]
[22 24 26 28]
[30 32 34 36]]
В этом примере функция sum_of_elements
применяется вдоль 0-й оси (ось=0) массива arr_3d
. Результирующий массив содержит сумму элементов по этой оси.
Метод 2: применение функции к нескольким осям
Мы также можем применить функцию к нескольким осям, используя np.apply_along_axis()
. Давайте снова рассмотрим 3D-массив и посчитаем среднее значение каждого 2D-среза по первой и второй осям:
def average_of_slice(arr):
return np.mean(arr)
result = np.apply_along_axis(average_of_slice, axis=(1, 2), arr=arr_3d)
print(result)
Выход:
[[ 6.5 7.5 8.5 9.5]
[17.5 18.5 19.5 20.5]]
Здесь функция average_of_slice
применяется как к 1-й, так и ко 2-й осям (axes=(1, 2)) массива arr_3d
. Результирующий массив содержит среднее значение каждого двумерного среза по этим осям.
Метод 3: применение пользовательских функций
Мы также можем определить пользовательские функции для применения с помощью np.apply_along_axis()
. Давайте рассмотрим 4D-массив и применим специальную функцию, которая вычисляет произведение максимального и минимального значений по третьей оси:
def custom_function(arr):
return np.max(arr) * np.min(arr)
arr_4d = np.random.randint(1, 10, size=(2, 3, 4, 5))
result = np.apply_along_axis(custom_function, axis=2, arr=arr_4d)
print(result)
Выход:
[[ 32 135 45]
[ 72 72 72]]
В этом примере custom_function
вычисляет произведение максимального и минимального значений вдоль второй оси (ось=2) четырехмерного массива arr_4d
.
В этой записи блога мы рассмотрели различные методы использования np.apply_along_axis()
для применения функций к определенным осям многомерных массивов в Python. Мы научились применять функции вдоль одной оси, нескольких осей и даже определять собственные функции для выполнения сложных операций. Используя возможности np.apply_along_axis()
, вы можете эффективно манипулировать многомерными массивами и открывать новые возможности в анализе данных и научных вычислениях.