Критерій, який слід задовольнити для надання нової форми, полягає в тому, що "Нова форма повинна бути сумісною з початковою формою"
numpy дозволяють дати один з нових параметрів форми як -1 (наприклад: (2, -1) або (-1,3), але не (-1, -1)). Це просто означає, що це невідомий вимір, і ми хочемо нуме розібратися в цьому. І numpy визначить це, переглянувши "довжину масиву та залишки розмірів" і переконавшись, що він відповідає вищезгаданим критеріям
Тепер дивіться приклад.
z = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
z.shape
(3, 4)
Зараз намагаємось змінити форму (-1). Результат нової форми (12,) і сумісний з оригінальною формою (3,4)
z.reshape(-1)
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
Зараз намагаємось змінити форму (-1, 1). Ми вказали стовпчик як 1, але рядки як невідомі. Таким чином ми отримуємо результат нової форми у вигляді (12, 1). Сумісний з оригінальною формою (3,4)
z.reshape(-1,1)
array([[ 1],
[ 2],
[ 3],
[ 4],
[ 5],
[ 6],
[ 7],
[ 8],
[ 9],
[10],
[11],
[12]])
Вищезазначене узгоджується з numpy
порадами / повідомленнями про помилки, які використовуються reshape(-1,1)
для однієї функції; тобто одна колонка
Переформатуйте свої дані, використовуючи, array.reshape(-1, 1)
якщо ваші дані мають єдину функцію
Нова форма як (-1, 2). рядок невідомий, стовпець 2. отримуємо результат нової форми як (6, 2)
z.reshape(-1, 2)
array([[ 1, 2],
[ 3, 4],
[ 5, 6],
[ 7, 8],
[ 9, 10],
[11, 12]])
Зараз намагається зберегти стовпчик як невідомий. Нова форма як (1, -1). тобто рядок 1, стовпець невідомий. ми отримуємо результат нової форми у вигляді (1, 12)
z.reshape(1,-1)
array([[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]])
Вищезазначене узгоджується з numpy
порадами / повідомленнями про помилку, що використовуються reshape(1,-1)
для одного зразка; тобто один ряд
Переформатуйте свої дані, використовуючи, array.reshape(1, -1)
якщо вони містять один зразок
Нова форма (2, -1). Рядок 2, стовпець невідомий. отримуємо результат нової форми у вигляді (2,6)
z.reshape(2, -1)
array([[ 1, 2, 3, 4, 5, 6],
[ 7, 8, 9, 10, 11, 12]])
Нова форма як (3, -1). Рядок 3, стовпець невідомий. отримуємо результат нової форми у вигляді (3,4)
z.reshape(3, -1)
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
І нарешті, якщо ми спробуємо надати обидва виміри як невідомі, тобто нову форму, як (-1, -1). Це призведе до помилки
z.reshape(-1, -1)
ValueError: can only specify one unknown dimension
reshape
так, щоб підтримувати однакову кількість елементів.