#python #numpy
#python #numpy
Вопрос:
У меня есть переменная z, хранящая параметры длины и высоты файлов изображений, где z — это
z = [length, height]
и я хочу изменить это измерение на просто:
z = [area] where area = length * height
Я попытался использовать функцию numpy reshape следующим образом:
area = z.shape[0] * z.shape[1] #length * height
z = z.reshape(-1) #was trying to reduce to just z = [area]
но мне показалось, что я неправильно использую функцию reshape. Кто-нибудь может мне помочь?
Ответ №1:
Простой пример того, как использовать reshape:
import numpy as np
a = np.random.randint(0,10,(10,10))
b = np.reshape(a, (100,))
print(b)
Для вашего случая это будет:
print(a.shape) # prints (length,height)
b = np.reshape(a, (length * height,))
print(b.shape) # prints (length * height,)
Для выполнения изменения формы на месте вы также можете использовать:
a.shape = ((100,))
Комментарии:
1. Огромное спасибо! Могу ли я узнать, в чем разница использования np.reshape () по сравнению с.reshape()?
2. Конечно, никаких проблем. Они делают то же самое, но мне нравится форма np.reshape поверх array.reshape, поскольку форма массива может создать впечатление, что изменение формы на месте, а форму np.reshape вам нужно назначить понятной. Пожалуйста, не забудьте принять ответ и поставить ему лайк. 😉