Преобразование и копирование массивов в NumPy
В NumPy преобразование и копирование массивов являются ключевыми операциями, которые позволяют эффективно манипулировать данными и управлять их представлением. Рассмотрим их подробно.
Преобразование массивов
Изменение формы массива
Функции для изменения формы массива не изменяют данные, а просто изменяют их представление:
reshape(newshape)
: Изменяет форму массива на указанную, не изменяя данных.-1
можно использовать для автоматического вычисления размера одной из осей:
resize(new_shape)
: Изменяет форму массива и, в отличие отreshape
, может изменять размер массива (добавляя или удаляя элементы), изменяя его данные.ravel()
: Возвращает одномерный массив, не изменяя исходный массив.flatten()
: Возвращает копию массива в одномерном виде.transpose()
: Возвращает транспонированный массив. В многомерных массивах меняет местами оси.np.swapaxes(axis1, axis2)
: Меняет местами две оси массива.
reshape(-1)
: Преобразует многомерный массив в одномерный, аналогичноravel()
.
Добавление и удаление осей
np.expand_dims(a, axis)
: Добавляет ось к массиву в указанной позиции.np.squeeze(a, axis=None)
: Удаляет оси с размером 1.
Копирование массивов
Копирование массивов может быть полным или поверхностным, и важно выбирать правильный метод в зависимости от задач:
Полное копирование
copy()
: Создает полную копию массива, в которой изменения не затрагивают оригинал.
Поверхностное копирование (ссылки)
Присваивание массива другой переменной не создает копию, а только создает новую ссылку на тот же объект:
Копирование с помощью срезов
Срезы создают новые представления массива, а не копии, если не указано иное:
Дополнительные операции преобразования
Преобразование типов
astype(dtype)
: Преобразует массив в другой тип данных.
Объединение и разбиение массивов
np.concatenate((a1, a2, ...), axis=0)
: Объединяет массивы по указанной оси.np.hstack((a1, a2, ...))
: Объединяет массивы горизонтально (по оси 1).np.vstack((a1, a2, ...))
: Объединяет массивы вертикально (по оси 0).np.split(ary, indices_or_sections, axis=0)
: Разделяет массив на части.
Удаление дублирующихся данных
np.unique(a)
: Возвращает отсортированный массив уникальных элементов.np.unique(a, return_counts=True)
: Возвращает уникальные элементы и их частоту.
Эти функции и методы помогут вам эффективно управлять массивами в NumPy, выполнять преобразования данных и работать с их копиями в зависимости от ваших потребностей.
Last updated