В этом посте мы рассмотрим различные методы работы с массивами NumPy, включая изменение формы, транспонирование, наложение и разделение. Эти методы полезны для изменения формы и структуры массивов и могут быть использованы для подготовки данных для различных видов анализа и обработки.
Изменение формы массивов
Одна из распространенных операций, которую вам может понадобиться выполнить над массивом, — это преобразование его в другую форму. Функция reshape
позволяет это сделать, если новая фигура имеет то же количество элементов, что и исходный массив.
Вот пример преобразования одномерного массива в двумерный:
import numpy as np a = np.array([1, 2, 3, 4, 5, 6]) # Reshape a into a 3x2 array b = a.reshape((3, 2)) print(b) # [[1 2] # [3 4] # [5 6]]
Вы также можете использовать функцию reshape
, чтобы преобразовать массив в одномерный массив:
import numpy as np a = np.array([[1, 2, 3], [4, 5, 6]]) # Flatten a into a 1-dimensional array b = a.reshape((6,)) print(b) # [1 2 3 4 5 6]
Изменение формы массивов может быть полезно в различных сценариях. Например, предположим, что у вас есть набор данных, содержащий серию изображений, представленных в виде трехмерных массивов с измерениями, представляющими высоту, ширину и цветовые каналы. Если вы хотите выполнить какую-то операцию с цветовыми каналами всех изображений, вы можете преобразовать массивы в 4-мерные массивы с четвертым измерением, представляющим изображения. Это позволит вам выполнять операцию со всеми изображениями сразу, а не перебирать их по отдельности.
Транспонирование массивов
Другой способ манипулирования массивами — их транспонирование, что означает перестановку осей. Функция transpose
позволяет вам сделать это, указав индексы осей, которые вы хотите поменять местами.
Вот пример транспонирования двумерного массива:
import numpy as np a = np.array([[1, 2, 3], [4, 5, 6]]) # Transpose a b = a.transpose() print(b) # [[1 4] # [2 5] # [3 6]]
Вы также можете использовать атрибут T
для транспонирования массива:
import numpy as np a = np.array([[1, 2, 3], [4, 5, 6]]) # Transpose a b = a.T print(b) # [[1 4] # [2 5] # [3 6]]
Транспонирование массивов может быть полезно в различных сценариях. Например, предположим, что у вас есть набор данных, содержащий ряд изображений, представленных в виде двумерных массивов с размерами, представляющими высоту и ширину. Если вы хотите построить изображения, используя библиотеку, которая ожидает, что размеры будут представлены как (ширина, высота), вы можете использовать функцию transpose
, чтобы поменять местами размеры перед построением.
Стекирование и разбиение массивов
NumPy также предоставляет функции для укладки и разделения массивов, которые могут быть полезны для объединения или разделения массивов.
Функция concatenate
позволяет складывать массивы вдоль заданной оси.
Вот пример размещения двух двумерных массивов вдоль вертикальной оси:
import numpy as np a = np.array([[1, 2], [3, 4]]) b = np.array([[5, 6], [7, 8]]) # Stack a and b vertically c = np.concatenate((a, b), axis=0) print(c) # [[1 2] # [3 4] # [5 6] # [7 8]]
Вы также можете использовать функции vstack
и hstack
для укладки массивов вертикально или горизонтально соответственно.
import numpy as np a = np.array([[1, 2], [3, 4]]) b = np.array([[5, 6], [7, 8]]) # Stack a and b vertically c = np.vstack((a, b)) print(c) # [[1 2] # [3 4] # [5 6] # [7 8]] # Stack a and b horizontally d = np.hstack((a, b)) print(d) # [[1 2 5 6] # [3 4 7 8]]
Функция split
позволяет разделить массив на несколько массивов вдоль указанной оси.
Вот пример разделения двумерного массива на два массива по вертикальной оси:
import numpy as np a = np.array([[1, 2], [3, 4], [5, 6], [7, 8]]) # Split a into two arrays along the vertical axis b, c = np.split(a, 2, axis=0) print(b) # [[1 2] # [3 4]] print(c) # [[5 6] # [7 8]]
Стекирование и разбиение массивов могут быть полезны в различных сценариях. Например, предположим, что у вас есть набор данных, содержащий серию изображений, представленных в виде двумерных массивов, и вы хотите сложить их по горизонтали, чтобы создать одно изображение. Для этого можно использовать функцию hstack
.
Сглаживание массивов
Иногда вам может понадобиться свести многомерный массив к одному измерению. Один из способов сделать это — использовать функцию flatten
:
import numpy as np a = np.array([[1, 2, 3], [4, 5, 6]]) # Flatten a b = a.flatten() print(b) # [1 2 3 4 5 6]
Другой способ сгладить массив — использовать функцию ravel
, которая возвращает представление массива с теми же данными, но в сглаженной форме. Это означает, что изменение возвращаемого массива также изменит исходный массив.
import numpy as np a = np.array([[1, 2, 3], [4, 5, 6]]) # Flatten a b = a.ravel() print(b) # [1 2 3 4 5 6]
Сглаживание массивов может быть полезно в различных сценариях. Например, предположим, что у вас есть набор данных, содержащий ряд изображений, представленных в виде двумерных массивов, и вы хотите применить модель машинного обучения, которая ожидает, что входными данными будет одномерный массив. Вы можете использовать функцию flatten
или ravel
для преобразования массивов в одно измерение, прежде чем передавать их в модель.
Заключение
В этом посте мы узнали о различных методах управления массивами NumPy, включая изменение формы, транспонирование, наложение и разделение. Мы также узнали о выравнивании массивов. Эти приемы могут быть полезны для изменения формы и структуры массивов, а также могут быть использованы для подготовки данных к различного рода анализу и обработке.
В следующей части этой серии мы рассмотрим более продвинутые функции NumPy, включая широковещательную рассылку массивов и операции с элементами. Следите за обновлениями!