РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
374 of 541 menu

Метод squeeze

Метод squeeze класса ndarray удаляет из массива все оси (измерения), длина которых равна единице. В результате возвращается новый массив с меньшим количеством измерений, но с тем же общим количеством элементов. Метод полезен для упрощения формы массива после операций, которые могут добавлять одиночные измерения, например, после индексации или использования функций expand_dims.

Параметры метода:

  • axis (необязательный) - целое число, кортеж или None. Определяет, какие именно оси с размером 1 необходимо удалить. По умолчанию (None) удаляются все оси с размером 1. Если указана конкретная ось, которая имеет размер не равный 1, будет вызвана ошибка ValueError.

Синтаксис

arr.squeeze([axis])

Пример

Давайте создадим трехмерный массив с одним элементом в некоторых измерениях и удалим все оси с размером 1:

import numpy as np arr = np.array([[[1], [2], [3]]]) print("Shape before:", arr.shape) res = arr.squeeze() print("Shape after:", res.shape) print(res)

Результат выполнения кода:

"Shape before: (1, 3, 1)" "Shape after: (3,)" [1 2 3]

Пример

Удалим только конкретную ось с размером 1, передав параметр axis:

import numpy as np arr = np.array([[[1, 2, 3]]]) print("Shape before:", arr.shape) res = arr.squeeze(axis=0) print("Shape after:", res.shape) print(res)

Результат выполнения кода:

"Shape before: (1, 1, 3)" "Shape after: (1, 3)" [[1 2 3]]

Пример

Если передать ось, которая не имеет размера 1, метод вызовет ошибку:

import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) print("Shape:", arr.shape) try: res = arr.squeeze(axis=0) except ValueError as err: print("Error:", err)

Результат выполнения кода:

"Shape: (2, 3)" "Error: cannot select an axis to squeeze out which has size not equal to one"

Пример

Метод squeeze часто используется для удаления лишних измерений после извлечения одного элемента из массива:

import numpy as np arr = np.array([[1, 2, 3, 4, 5]]) print("Original shape:", arr.shape) slice_arr = arr[:, 2:3] print("After slicing shape:", slice_arr.shape) res = slice_arr.squeeze() print("After squeeze shape:", res.shape) print(res)

Результат выполнения кода:

"Original shape: (1, 5)" "After slicing shape: (1, 1)" "After squeeze shape: ()" 3

Обратите внимание: массив скалярного размера (пустая форма) является допустимым результатом и содержит один элемент.

Смотрите также

  • метод reshape,
    который изменяет форму массива без изменения данных
  • метод ravel,
    который преобразует массив в одномерный
  • метод flatten,
    который возвращает одномерную копию массива
  • атрибут shape,
    который возвращает форму массива
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить