Удаление единичных осей в NumPy
Убрать оси длины 1 позволяет функция squeeze.
Она удаляет из
формы все оси, где только одна
ячейка. Числа в массиве при этом
не меняются.
Создадим таблицу из одной строки и трёх столбцов. Её форма содержит единицу в первой оси. Выведем форму до и после удаления таких осей:
import numpy as np
block = np.array([[1, 2, 3]])
print(np.shape(block)) # выведет (1, 3)
flat = np.squeeze(block)
print(flat) # выведет [1 2 3]
print(np.shape(flat)) # выведет (3,)
Лишняя ось может стоять и в другом месте. Уберём её у столбца из одного столбца:
import numpy as np
col = np.array([[10], [20], [30]])
print(np.shape(col)) # выведет (3, 1)
row = np.squeeze(col)
print(row) # выведет [10 20 30]
print(np.shape(row)) # выведет (3,)
Если единичных осей несколько, убираются все сразу:
import numpy as np
box = np.array([[[1, 2, 3]]])
print(np.shape(box)) # выведет (1, 1, 3)
plain = np.squeeze(box)
print(np.shape(plain)) # выведет (3,)
Создайте массив [[4, 5, 6, 7]].
Уберите оси длины 1 и выведите
форму результата.
Создайте массив [[1], [2], [3]].
Уберите лишние оси и выведите
полученный одномерный ряд.
Создайте массив формы (2, 1, 3)
из нулей. Выведите форму до и после
удаления осей длины 1.