logo

numpy.reshape() v Pythonu

Funkce numpy.reshape() je dostupná v balíčku NumPy. Jak název napovídá, reshape znamená „změny tvaru“. Funkce numpy.reshape() nám pomáhá získat nový tvar pole bez změny jeho dat.

Někdy potřebujeme data přetvořit z širokých na dlouhé. Takže v této situaci musíme pole přetvořit pomocí funkce reshape().

Syntax

 numpy.reshape(arr, new_shape, order='C') 

Parametry

Funkce reshape() má následující parametry:

1) arr: array_like

Toto je ndarray. Toto je zdrojové pole, které chceme přetvořit. Tento parametr je zásadní a hraje zásadní roli ve funkci numpy.reshape().

java elseif

2) new_shape: int nebo n-tice ints

Tvar, do kterého chceme převést naše původní pole, by měl být kompatibilní s původním polem. Pokud je to celé číslo, výsledkem bude 1-D pole této délky. Jeden rozměr tvaru může být -1. Zde je hodnota aproximována délkou pole a zbývajícími rozměry.

3) pořadí: {'C', 'F', 'A'}, volitelné

Tento parametr pořadí indexů hraje klíčovou roli ve funkci reshape(). Tato pořadí indexů se používají ke čtení prvků zdrojového pole a umístění prvků do přetvarovaného pole pomocí tohoto pořadí indexů.

  1. Pořadí indexu „C“ znamená číst/zapisovat prvky, které používají pořadí indexu podobné C, kde se index poslední osy mění nejrychleji, zpět k indexu první osy, který se mění nejpomaleji.
  2. Pořadí indexu 'F' znamená číst/zapisovat prvky, které používají pořadí indexu podobné Fortranu, kde se index poslední osy mění nejpomaleji a index první osy se mění nejrychleji.
  3. Pořadí 'C' a 'F' nebere v úvahu rozložení paměti základního pole a odkazuje pouze na pořadí indexování.
  4. Pořadí indexu 'A' znamená číst/zapisovat prvky v pořadí indexu podobnému Fortranu, když je arr v paměti souvislé, jinak použijte pořadí podobné C.

Návraty

Tato funkce vrací ndarray. Pokud je to možné, je to nový objekt pohledu; jinak to bude kopie. Není zaručeno rozložení paměti vráceného pole.

Příklad 1: Uspořádání indexu podobné C

 import numpy as np x=np.arange(12) y=np.reshape(x, (4,3)) x y 

Výstup:

 array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) 

Ve výše uvedeném kódu

  • Importovali jsme numpy s aliasem np.
  • Vytvořili jsme pole 'a' pomocí funkce np.arrange().
  • Deklarovali jsme proměnnou 'y' a přiřadili vrácenou hodnotu funkce np.reshape().
  • Předali jsme pole 'x' a tvar ve funkci.
  • Nakonec jsme zkusili vytisknout hodnotu arr.

Ve výstupu bylo pole reprezentováno jako tři řádky a čtyři sloupce.

Příklad 2: Ekvivalent C ravel, pak C reshape

 import numpy as np x=np.arange(12) y=np.reshape(np.ravel(x),(3,4)) x y 

Funkce ravel() se používá k vytvoření souvislého zploštělého pole. Vrátí se jednorozměrné pole, které obsahuje prvky vstupu. Kopie se vytváří pouze v případě potřeby.

ctc plná forma

Výstup:

 array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) 

Příklad 3: Uspořádání indexu podobné Fortranu

 import numpy as np x=np.arange(12) y=np.reshape(x, (4, 3), order='F') x y 

Výstup:

 array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) array([[ 0, 4, 8], [ 1, 5, 9], [ 2, 6, 10], [ 3, 7, 11]]) 

Ve výše uvedeném kódu

  • Importovali jsme numpy s aliasem np.
  • Vytvořili jsme pole 'a' pomocí funkce np.arrange().
  • Deklarovali jsme proměnnou 'y' a přiřadili vrácenou hodnotu funkce np.reshape().
  • Předali jsme pole 'x' a tvar a pořadí indexu podobné Fortranu ve funkci.
  • Nakonec jsme zkusili vytisknout hodnotu arr.

Ve výstupu bylo pole reprezentováno jako čtyři řádky a tři sloupce.

Příklad 4: Uspořádání indexu podobné Fortranu

 import numpy as np x=np.arange(12) y=np.reshape(np.ravel(x, order='F'), (4, 3), order='F') x y 

Výstup:

 array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) array([[ 0, 4, 8], [ 1, 5, 9], [ 2, 6, 10], [ 3, 7, 11]]) 

Příklad 5: Nespecifikovaná hodnota je odvozena jako 2

 import numpy as np x=np.arange(12) y=np.reshape(x, (2, -1)) x y 

Ve výše uvedeném kódu

  • Importovali jsme numpy s aliasem np.
  • Vytvořili jsme pole 'a' pomocí funkce np.arrange().
  • Deklarovali jsme proměnnou 'y' a přiřadili vrácenou hodnotu funkce np.reshape().
  • Ve funkci jsme předali pole 'x' a tvar (nespecifikovaná hodnota).
  • Nakonec jsme zkusili vytisknout hodnotu arr.

Ve výstupu bylo pole reprezentováno jako dva řádky a pět sloupců.

Výstup:

 array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) array([[ 0, 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10, 11]])