Функция expand_dims
Функция expand_dims добавляет новую ось (размерность)
в массив NumPy на указанную позицию. Первым параметром
функция принимает исходный массив, вторым параметром -
позицию для вставки новой оси. Функция не изменяет
исходный массив, а возвращает новый с добавленной
размерностью.
Синтаксис
np.expand_dims(arr, axis)
Пример
Давайте создадим одномерный массив и добавим новую ось
на позицию 0 (перед существующей размерностью):
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
res = np.expand_dims(arr, axis=0)
print("Original shape:", arr.shape)
print("New shape:", res.shape)
print(res)
Результат выполнения кода:
Original shape: (5,)
New shape: (1, 5)
[[1 2 3 4 5]]
Пример
Теперь добавим новую ось на позицию 1 (после существующей
размерности), чтобы получить массив формы (5, 1):
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
res = np.expand_dims(arr, axis=1)
print("Original shape:", arr.shape)
print("New shape:", res.shape)
print(res)
Результат выполнения кода:
Original shape: (5,)
New shape: (5, 1)
[[1]
[2]
[3]
[4]
[5]]
Пример
Функция работает и с многомерными массивами. Добавим
новую ось в двумерный массив на позицию 0:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
res = np.expand_dims(arr, axis=0)
print("Original shape:", arr.shape)
print("New shape:", res.shape)
print(res)
Результат выполнения кода:
Original shape: (2, 3)
New shape: (1, 2, 3)
[[[1 2 3]
[4 5 6]]]
Пример
Можно использовать отрицательные индексы для указания
позиции новой оси. Например, axis=-1 добавит
ось в самом конце:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
res = np.expand_dims(arr, axis=-1)
print("Original shape:", arr.shape)
print("New shape:", res.shape)
print(res)
Результат выполнения кода:
Original shape: (5,)
New shape: (5, 1)
[[1]
[2]
[3]
[4]
[5]]
Пример
Используем отрицательный индекс для добавления оси
в середину двумерного массива. axis=-1 добавит
новую размерность в конце:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
res = np.expand_dims(arr, axis=-1)
print("Original shape:", arr.shape)
print("New shape:", res.shape)
print(res)
Результат выполнения кода:
Original shape: (2, 3)
New shape: (2, 3, 1)
[[[1]
[2]
[3]]
[[4]
[5]
[6]]]
Пример
Функция expand_dims часто используется для
подготовки данных к операциям, требующим определённой
размерности, например, для трансляции (broadcasting):
import numpy as np
arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array([10, 20, 30])
arr1_expanded = np.expand_dims(arr1, axis=1)
res = arr1_expanded + arr2
print("arr1 shape:", arr1.shape)
print("arr2 shape:", arr2.shape)
print("arr1 expanded shape:", arr1_expanded.shape)
print("Result shape:", res.shape)
print(res)
Результат выполнения кода:
arr1 shape: (5,)
arr2 shape: (3,)
arr1 expanded shape: (5, 1)
Result shape: (5, 3)
[[11 21 31]
[12 22 32]
[13 23 33]
[14 24 34]
[15 25 35]]
Смотрите также
-
функцию
squeeze,
которая удаляет оси с размерностью 1 -
функцию
atleast_2d,
которая преобразует массив как минимум в двумерный -
функцию
atleast_3d,
которая преобразует массив как минимум в трёхмерный -
функцию
reshape,
которая изменяет форму массива без изменения данных