Метод squeeze
Метод squeeze применяется к массиву NumPy
и возвращает новый массив с удаленными
размерностями, длина которых равна единице.
Первым параметром метод принимает ось или
кортеж осей, которые нужно удалить.
Если оси не указаны, удаляются все оси
с размером 1.
Синтаксис
arr.squeeze([axis])
Пример
Создадим одномерный массив и добавим лишнюю размерность с помощью reshape, затем удалим ее:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
arr_reshaped = arr.reshape(1, 5)
print("Before squeeze:", arr_reshaped.shape)
print(arr_reshaped)
arr_squeezed = arr_reshaped.squeeze()
print("After squeeze:", arr_squeezed.shape)
print(arr_squeezed)
Результат выполнения кода:
Before squeeze: (1, 5)
[[1 2 3 4 5]]
After squeeze: (5,)
[1 2 3 4 5]
Пример
Удалим все размерности с размером 1 из двумерного массива:
import numpy as np
arr = np.array([[[1, 2, 3]]])
print("Before squeeze:", arr.shape)
print(arr)
arr_squeezed = arr.squeeze()
print("After squeeze:", arr_squeezed.shape)
print(arr_squeezed)
Результат выполнения кода:
Before squeeze: (1, 1, 3)
[[[1 2 3]]]
After squeeze: (3,)
[1 2 3]
Пример
Удалим только указанную ось с размером 1, оставив остальные:
import numpy as np
arr = np.array([[[1, 2], [3, 4]]])
print("Before squeeze:", arr.shape)
print(arr)
arr_squeezed = arr.squeeze(axis=0)
print("After squeeze axis 0:", arr_squeezed.shape)
print(arr_squeezed)
Результат выполнения кода:
Before squeeze: (1, 2, 2)
[[[1 2]
[3 4]]]
After squeeze axis 0: (2, 2)
[[1 2]
[3 4]]
Пример
Попробуем удалить ось, которая не имеет размер 1 - массив останется без изменений:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print("Before squeeze:", arr.shape)
print(arr)
arr_squeezed = arr.squeeze(axis=1)
print("After squeeze:", arr_squeezed.shape)
print(arr_squeezed)
Результат выполнения кода:
Before squeeze: (2, 3)
[[1 2 3]
[4 5 6]]
After squeeze: (2, 3)
[[1 2 3]
[4 5 6]]
Пример
Удалим несколько осей с размером 1, указав их в кортеже:
import numpy as np
arr = np.array([[[[1, 2, 3, 4]]]])
print("Before squeeze:", arr.shape)
print(arr)
arr_squeezed = arr.squeeze(axis=(0, 1))
print("After squeeze axes 0 and 1:", arr_squeezed.shape)
print(arr_squeezed)
Результат выполнения кода:
Before squeeze: (1, 1, 1, 4)
[[[[1 2 3 4]]]]
After squeeze axes 0 and 1: (1, 4)
[[1 2 3 4]]
Смотрите также
-
метод
reshape,
который изменяет форму массива без изменения данных -
функцию
expand_dims,
которая добавляет новые размерности в массив -
метод
ravel,
который преобразует массив в одномерный -
атрибут
shape,
который возвращает кортеж с размерами массива