Kryterium, które należy spełnić, aby nadać nowy kształt, jest to, że „nowy kształt powinien być zgodny z oryginalnym kształtem”
numpy pozwala nam podać jeden z nowych parametrów kształtu jako -1 (np .: (2, -1) lub (-1,3), ale nie (-1, -1)). Oznacza to po prostu, że jest to nieznany wymiar i chcemy, aby numpy go zrozumiał. I numpy to zrozumie, patrząc na „długość tablicy i pozostałe wymiary” i upewniając się, że spełnia wyżej wymienione kryteria
Teraz zobacz przykład.
z = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
z.shape
(3, 4)
Teraz próbuje przekształcić za pomocą (-1). Wynik nowego kształtu to (12) i jest zgodny z oryginalnym kształtem (3,4)
z.reshape(-1)
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
Teraz próbuję zmienić kształt za pomocą (-1, 1). Podaliśmy kolumnę jako 1, ale wiersze jako nieznane. Otrzymujemy więc nowy kształt jako (12, 1). Ponownie zgodny z oryginalnym kształtem (3,4)
z.reshape(-1,1)
array([[ 1],
[ 2],
[ 3],
[ 4],
[ 5],
[ 6],
[ 7],
[ 8],
[ 9],
[10],
[11],
[12]])
Powyższe jest zgodne z komunikatem numpy
porady / błędu, który można wykorzystać reshape(-1,1)
w przypadku jednej funkcji; tj. pojedyncza kolumna
Przekształć dane, używając, array.reshape(-1, 1)
jeśli dane mają jedną funkcję
Nowy kształt jako (-1, 2). wiersz nieznany, kolumna 2. otrzymujemy wynik nowy kształt jako (6, 2)
z.reshape(-1, 2)
array([[ 1, 2],
[ 3, 4],
[ 5, 6],
[ 7, 8],
[ 9, 10],
[11, 12]])
Teraz próbuję zachować kolumnę jako nieznaną. Nowy kształt jako (1, -1). tzn. wiersz to 1, kolumna nieznana. otrzymujemy nowy kształt jako (1, 12)
z.reshape(1,-1)
array([[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]])
Powyższe jest zgodne z komunikatem numpy
porady / błędu, który należy zastosować reshape(1,-1)
dla pojedynczej próbki; tj. pojedynczy rząd
Przekształć dane, używając, array.reshape(1, -1)
jeśli zawiera pojedynczą próbkę
Nowy kształt (2, -1). Wiersz 2, kolumna nieznana. otrzymujemy nowy kształt jako (2,6)
z.reshape(2, -1)
array([[ 1, 2, 3, 4, 5, 6],
[ 7, 8, 9, 10, 11, 12]])
Nowy kształt jako (3, -1). Wiersz 3, kolumna nieznana. otrzymujemy nowy kształt jako (3,4)
z.reshape(3, -1)
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
I na koniec, jeśli spróbujemy podać oba wymiary jako nieznane, tj. Nowy kształt jako (-1, -1). Wyrzuci błąd
z.reshape(-1, -1)
ValueError: can only specify one unknown dimension
reshape
tak, aby zachować tę samą liczbę elementów.Służy do przekształcania tablicy.
Powiedzmy, że mamy trójwymiarową tablicę o wymiarach 2 x 10 x 10:
Teraz chcemy zmienić format na 5 X 5 x 8:
wykona robotę.
Zauważ, że po naprawieniu pierwszego dim = 5 i drugiego dim = 5 nie trzeba określać trzeciego wymiaru. Aby pomóc w lenistwie, python daje opcję -1:
da ci tablicę kształtu = (5, 5, 8).
Również,
da ci tablicę kształtu = (50, 4)
Możesz przeczytać więcej na http://anie.me/numpy-reshape-transpose-theano-dimshuffle/
źródło
Według
the documentation
:źródło
[8]
dlatego, że dokumentacja tak mówi (1-D array
). Spróbowaćnumpy.reshape(a, [8])
. Daje taki sam wynik jaknumpy.reshape(a, [1,8])
dla matrycy.numpy.reshape (a, newshape, order {}) sprawdź poniższy link, aby uzyskać więcej informacji. https://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html
w poniższym przykładzie, o którym wspomniałeś, dane wyjściowe wyjaśniają, że powstały wektor jest pojedynczym wierszem. (-1) wskazuje liczbę wierszy do 1., jeśli
wynik:
macierz ([[1, 2, 3, 4, 5, 6, 7, 8]])
można to wyjaśnić dokładniej na innym przykładzie:
wyjście: (jest jednowymiarową tablicą kolumnową)
tablica ([[0],
b = np.arange (10) .reshape ((1, -1))
wynik: (jest jednowymiarową tablicą wierszy)
tablica ([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])
źródło
Jest dość łatwy do zrozumienia. „-1” oznacza „nieznany wymiar”, który można wprowadzić z innego wymiaru. W takim przypadku, jeśli ustawisz swoją matrycę w ten sposób:
Zmodyfikuj swoją matrycę w następujący sposób:
Wywoła niektóre operacje niesłyszące do macierzy a, która zwróci tablicę numpy / martrix 1-d.
Jednak nie sądzę, że dobrym pomysłem jest używanie takiego kodu. Dlaczego nie spróbować:
Zapewni to ten sam wynik i czytelnicy zrozumieją: Ustaw b jako inny kształt a. Dla a, nie wiemy, ile kolumn powinien mieć (ustaw na -1!), Ale chcemy tablicy 1-wymiarowej (ustaw pierwszy parametr na 1!).
źródło
Krótka historia : ustawiłeś niektóre wymiary i pozwoliłeś NumPy ustawić pozostałe.
źródło
Oznacza to po prostu, że nie jesteś pewien, jaką liczbę wierszy lub kolumn możesz podać, i prosisz numpy o zasugerowanie liczby kolumn lub wierszy, w których chcesz zmienić kształt.
numpy podaje ostatni przykład -1 https://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html
sprawdź poniższy kod i jego dane wyjściowe, aby lepiej zrozumieć (-1):
KOD:-
WYNIK :-
źródło
źródło
Ostatecznym wynikiem konwersji jest to, że liczba elementów w końcowej tablicy jest taka sama jak początkowej tablicy lub ramki danych.
-1 odpowiada nieznanej liczbie wierszy lub kolumn. możemy myśleć o tym jako
x
(nieznane).x
jest uzyskiwany przez podzielenie liczby elementów w oryginalnej tablicy przez drugą wartość uporządkowanej pary z -1.Przykłady
12 elementów o zmienionym kształcie (-1,1) odpowiada tablicy o
x
= 12/1 = 12 wierszy i 1 kolumnie.12 elementów o zmienionym kształcie (1, -1) odpowiada tablicy z 1 rzędem i
x
= 12/1 = 12 kolumn.źródło