Поиск по сайту:

Разница между методами 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(), можно использовать в ситуации, когда нет необходимости сохранять исходный массив. Но если параметры, переданные функциям, не соответствуют фактическому размеру массива или если в массиве недостаточно элементов, возникают ошибки.

Изменение формы предпочтительнее изменения размера, если исходный массив должен остаться нетронутым.

Статьи по данной тематике: