Разница между методами reshape() и resize() в Numpy
Размер массивов NumPy можно изменить с помощью двух функций Python, а именно изменения формы и изменения размера. Их отличает только одно: исходный массив остается неизменным при использовании resize(), тогда как reshape() возвращает только измененный массив, а исходный массив остается нетронутым.
Синтаксис
Изменить форму()
reshape(x,y)
В этом синтаксисе x указывает количество меньших массивов, которые необходимо создать из большего массива, предоставленного в качестве входных данных, а y обозначает фактическое количество элементов, присутствующих в массиве.
Метод возвращает измененный массив, если значения практичны, и возвращает ошибку, если массив не может быть разделен на указанное количество меньших массивов.
Изменить размер()
resize(x,y)
Функция очень похожа на функцию reshape() при определении параметров x и y. Схема возврата также остается прежней.
Кроме того, исходный массив постоянно изменяется.
Пример 1
Это объясняет использование атрибута reshape() для управления функциями массива. В этом примере массив из 8 элементов изменяется таким образом, что он делится на 4 меньших массива, каждый из которых содержит 2 элемента.
Алгоритм
Шаг 1: импортируйте numpy как np
Шаг 2: создайте массив numpy из заданного массива.
Шаг 3: используйте функцию изменения формы, передав количество элементов в каждом меньшем массиве и количество таких меньших массивов.
Шаг 4: распечатайте массив.
Пример
#import numpy
import numpy as np
#create a numpy array with values of the array.
data = np.array([10, 20, 30, 40, 50, 60, 70, 80])
#print the contents of the original numpy array
print("Original array: ")
display(data)
#reshape the array into a 4x2 matrix and display it.
print("Reshaped array: ")
display(data.reshape(4, 2))
#print the original array
print("Original array:")
display(data)
Выход
Original array:
array([10, 20, 30, 40, 50, 60, 70, 80])
Reshaped array:
array([[10, 20],
[30, 40],
[50, 60],
[70, 80]])
Из вывода мы видим, что исходный массив остается неизменным даже после использования reshape() . Изменения вносятся в буферный массив, имеющий необходимые размеры.
Пример 2
Этот код объясняет использование атрибута resize() для управления функциями массива. Здесь размер массива из 8 элементов изменяется таким образом, что он делится на 4 массива, каждый из которых содержит 2 элемента. Обратите внимание, что изменения вносятся в сам исходный массив.
Алгоритм
Шаг 1: импортируйте numpy как np
Шаг 2: создайте массив numpy из заданного массива.
Шаг 3: используйте функцию изменения размера, передав количество элементов в каждом меньшем массиве и количество таких меньших массивов.
Шаг 4: распечатайте массив.
Пример
#import numpy
import numpy as np
#create a numpy array with values of the array
data = np.array([10, 20, 30, 40, 50, 60, 70, 80])
#print the contents of the original array
print("Original array: ")
display(data)
#resize the array into a 4x2 matrix
print("Resized array: ")
display(data.resize(4, 2))
#print the original array
print("Original array:")
display(data)
Выход
Original array:
array([10, 20, 30, 40, 50, 60, 70, 80])
Resized array:
None
Original array:
array([[10, 20],
[30, 40],
[50, 60],
[70, 80]])
Мы можем заметить, что отдельного массива с измененным размером не существует, а сам исходный массив манипулируется так, чтобы он соответствовал размерам, указанным пользователем в качестве параметров в функции изменения размера.
Ключевые различия
- Functionality
Атрибут reshape выдает ValueError, если массив не делится на указанное количество подмассивов. Ошибка значения наблюдается всякий раз, когда в массиве недостаточно элементов.
- In-place switching
В случае reshape() создается копия существующего массива, и изменения размеров производятся в копии массива. Таким образом, размеры исходного массива не изменяются.
Заключение
Оба метода, reshape() и resize(), можно использовать в ситуации, когда нет необходимости сохранять исходный массив. Но если параметры, переданные функциям, не соответствуют фактическому размеру массива или если в массиве недостаточно элементов, возникают ошибки.
Изменение формы предпочтительнее изменения размера, если исходный массив должен остаться нетронутым.