Критерий для предоставления новой формы заключается в том, что «новая форма должна быть совместима с исходной формой»
Numpy позволяет нам задать один из новых параметров формы как -1 (например: (2, -1) или (-1,3), но не (-1, -1)). Это просто означает, что это неизвестное измерение, и мы хотим, чтобы numpy понял это. И 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
чтобы поддерживать одинаковое количество элементов.Используется для изменения формы массива.
Скажем, у нас есть трехмерный массив размеров 2 x 10 x 10:
Теперь мы хотим изменить до 5 х 5 х 8:
сделаю работу.
Обратите внимание, что как только вы исправите первое dim = 5 и второе dim = 5, вам не нужно определять третье измерение. Чтобы помочь вашей лени, python предоставляет опцию -1:
даст вам массив формы = (5, 5, 8).
Точно так же,
даст вам массив формы = (50, 4)
Вы можете прочитать больше на http://anie.me/numpy-reshape-transpose-theano-dimshuffle/
источник
По словам
the documentation
:источник
[8]
что в документации так сказано (1-D array
). Попробуйnumpy.reshape(a, [8])
. Это дает тот же результат, что иnumpy.reshape(a, [1,8])
для матрицы.numpy.reshape (a, newshape, order {}) проверьте ссылку ниже для получения дополнительной информации. https://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html
для приведенного ниже примера выходные данные объясняют, что результирующий вектор представляет собой одну строку. (- 1) указывает число строк, равное 1. Если
вывод:
матрица ([[1, 2, 3, 4, 5, 6, 7, 8]])
это можно объяснить более точно на другом примере:
вывод: (это одномерный столбчатый массив)
Массив ([[0],
b = np.arange (10) .reshape ((1, -1))
вывод: (это одномерный массив строк)
массив ([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])
источник
Это довольно легко понять. «-1» означает «неизвестное измерение», которое может быть выведено из другого измерения. В этом случае, если вы установите свою матрицу так:
Измените вашу матрицу следующим образом:
Это вызовет некоторые операции по умолчанию с матрицей a, которая вернет 1-й массив numpy / martrix.
Однако я не думаю, что это хорошая идея использовать такой код. Почему бы не попробовать:
Это даст вам тот же результат, и читателям будет более понятно: установите b в качестве другой формы a. Например, мы не знаем, сколько столбцов должно быть (установите его в -1!), Но нам нужен одномерный массив (установите первый параметр в 1!).
источник
Короче говоря : вы устанавливаете некоторые размеры и позволяете NumPy устанавливать остальные.
источник
Это просто означает, что вы не уверены в том, какое количество строк или столбцов вы можете указать, и вы просите numpy предложить количество столбцов или строк, которые будут изменены.
numpy предоставляет последний пример для -1 https://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html
проверьте код ниже и его вывод, чтобы лучше понять (-1):
КОД:-
ВЫВОД :-
источник
источник
Конечный результат преобразования состоит в том, что количество элементов в конечном массиве такое же, как и в исходном массиве или кадре данных.
-1 соответствует неизвестному числу строк или столбцов. мы можем думать об этом как
x
(неизвестно).x
получается делением количества элементов в исходном массиве на другое значение упорядоченной пары с -1.Примеры
12 элементов с изменением формы (-1,1) соответствуют массиву с
x
= 12/1 = 12 строк и 1 столбец.12 элементов с изменением формы (1, -1) соответствует массиву с 1 строкой и
x
= 12/1 = 12 столбцов.источник