@yavaskript

Как работает эта строка numpy.reshape?

В туториале встречается такая строка:
x = np.array(x).reshape(-1, size, size, 1)
которая практически не объясняется. Сказано, что первый аргумент (-1) - означает, что нужно принимать любые данные. Но что это значит? Size - размер массива - это и так понятно. А последний аргумент (1) по идее означает "grayscale". По документации к numpy.reshape третий аргумент может быть только order : {‘C’, ‘F’, ‘A’}, но никак не цифрой. Пожалуйста, разъясните, что делает эта строка!
  • Вопрос задан
  • 7088 просмотров
Решения вопроса 1
adugin
@adugin Куратор тега Python
Вы читаете документацию не к той функции: вам надо читать numpy.ndarray.reshape. И там английским по белому в Notes сказано следующее: Unlike the free function numpy.reshape, this method on ndarray allows the elements of the shape parameter to be passed in as separate arguments. For example, a.reshape(10, 11) is equivalent to a.reshape((10, 11)).

Число -1 означает не "любые данные", а то, что numpy пересчитает одну недостающую размерность исходя из размера данных и остальных известных размерностей. Например, возьмём RGB-картинку 640х480: (480, 640, 3). В то же время эту структуру можно рассматривать как пачку (батч) из трёх ч/б картинок: (-1, 480, 640, 1), где вместо -1 numpy автоматически рассчитает число 3. У вас size - это не размер массива, а размер одного его измерения. Для того, чтобы понять, как это работает, разберитесь, как numpy размещает данные в памяти и что такое stride.

Последний аргумент не означает grayscale, он обозначает, что размерность массива в последнем измерении равна 1. Для картинки это иногда можно интерпретировать как grayscale.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Kreep74
Начинающий программист
тут примеры посмотри https://pyprog.pro/array_manipulation/reshape.html
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы