Одной из наиболее полезных функций NumPy является функция reshape()
, которая позволяет изменять форму массива без изменения его данных. Эта статья предоставит всесторонний обзор этой функции с примерами.
Прежде чем приступить к примерам, давайте разберемся с тем, что такое "форма" массива. Форма массива - это кортеж, указывающий количество элементов в каждом измерении. Например, у массива размером (3, 4) есть 3 строки и 4 столбца.
Функция reshape()
позволяет изменять эту форму, распределяя элементы массива по новым измерениям.
Давайте подробно разберем синтаксис этой функции.
numpy.ndarray.reshape(shape, order='C')
shape
: Это кортеж, который определяет новую форму массива. Например, (2, 3) создаст массив с 2 строками и 3 столбцами.order
(необязательный): Этот параметр определяет, в каком порядке следует читать элементы исходного массива. По умолчанию используется порядок C
(C-style, где последний индекс изменяется быстрее всего). Альтернативный порядок - F
(Fortran-style, где первый индекс изменяется быстрее всего).import numpy as np
# Создаем одномерный массив
arr = np.array([1, 2, 3, 4, 5, 6])
print(arr) # [1 2 3 4 5 6]
# Изменяем форму массива на двумерный размером 2x3
reshaped_arr = arr.reshape(2, 3)
print(reshaped_arr)
# [[1 2 3]
# [4 5 6]]
reshape()
для массива с 10 элементами в форму (3, 4) вы получите ошибку, так как общее количество элементов в новой форме (12) отличается от исходного (10).arr = np.array([1, 2, 3, 4, 5, 6])
# Используем -1 для автоматического вычисления количества строк
reshaped_arr = arr.reshape(-1, 3)
print(reshaped_arr)
# [[1 2 3]
# [4 5 6]]
reshape()
не ограничивается только одномерными массивами. Вы можете изменять форму и многомерных массивов.
# Создаем массив размером 3x2
arr = np.array([[1, 2], [3, 4], [5, 6]])
print(arr)
# [[1 2]
# [3 4]
# [5 6]]
# Изменяем форму на 2x3
reshaped_arr = arr.reshape(2, 3)
print(reshaped_arr)
# [[1 2 3]
# [4 5 6]]
Чтобы "развернуть" многомерный массив в одномерный, используйте reshape(-1)
:
arr = np.array([[1, 2], [3, 4], [5, 6]])
flattened_arr = arr.reshape(-1)
print(flattened_arr) # [1 2 3 4 5 6]
Функция reshape()
является одним из основных инструментов в арсенале разработчика при работе с NumPy. Она предоставляет гибкость при моделировании данных и может быть использована в широком диапазоне приложений, от обработки изображений до анализа временных рядов.
Содержание: