Funkcija numpy.reshape() dostupna je u paketu NumPy. Kao što ime sugerira, reshape znači 'promjene oblika'. Funkcija numpy.reshape() pomaže nam da dobijemo novi oblik niza bez mijenjanja njegovih podataka.
Ponekad moramo preoblikovati podatke iz širokih u dugačke. Dakle, u ovoj situaciji moramo preoblikovati niz pomoću funkcije reshape().
Sintaksa
numpy.reshape(arr, new_shape, order='C')
Parametri
Postoje sljedeći parametri funkcije reshape():
1) arr: array_like
Ovo je ndarray. Ovo je izvorni niz koji želimo preoblikovati. Ovaj je parametar bitan i igra vitalnu ulogu u funkciji numpy.reshape().
Logika 1. reda
2) novi_oblik: int ili tuple int
Oblik u koji želimo pretvoriti naš izvorni niz trebao bi biti kompatibilan s izvornim nizom. Ako je cijeli broj, rezultat će biti 1-D niz te duljine. Jedna dimenzija oblika može biti -1. Ovdje je vrijednost aproksimirana duljinom niza i preostalim dimenzijama.
3) poredak: {'C', 'F', 'A'}, izborno
Parametar reda ovih indeksa igra ključnu ulogu u funkciji reshape(). Ovi redoslijedi indeksa koriste se za čitanje elemenata izvornog niza i postavljanje elemenata u preoblikovani niz pomoću ovog redoslijeda indeksa.
- Redoslijed indeksa 'C' znači čitanje/pisanje elemenata koji koriste redoslijed indeksa nalik na C gdje se zadnji indeks osi mijenja najbrže, natrag do indeksa prve osi koji se mijenja najsporije.
- Redoslijed indeksa 'F' znači čitanje/pisanje elemenata koji koriste redoslijed indeksa sličan Fortranu, gdje se indeks zadnje osi mijenja najsporije, a indeks prve osi najbrže.
- Redoslijed 'C' i 'F' ne zauzima nikakvu količinu memorijskog rasporeda osnovnog niza i odnosi se samo na redoslijed indeksiranja.
- Redoslijed indeksa 'A' znači čitanje/pisanje elemenata prema redoslijedu indeksa sličnom Fortranu, kada je arr kontinuiran u memoriji, inače koristite redoslijed sličan C-u.
Povratak
Ova funkcija vraća ndarray. To je novi objekt pogleda ako je moguće; inače će biti kopija. Ne postoji jamstvo za memorijski raspored vraćenog niza.
Primjer 1: Redoslijed indeksa nalik na C
import numpy as np x=np.arange(12) y=np.reshape(x, (4,3)) x y
Izlaz:
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]])
U gornjem kodu
- Uvezli smo numpy s alias imenom np.
- Stvorili smo niz 'a' pomoću funkcije np.arrange().
- Deklarirali smo varijablu 'y' i dodijelili vraćenu vrijednost funkcije np.reshape().
- Proslijedili smo niz 'x' i oblik u funkciji.
- Na kraju, pokušali smo ispisati vrijednost arr.
U izlazu, niz je predstavljen kao tri retka i četiri stupca.
Primjer 2: Ekvivalent C ravel zatim C reshape
import numpy as np x=np.arange(12) y=np.reshape(np.ravel(x),(3,4)) x y
Funkcija ravel() koristi se za stvaranje kontinuiranog spljoštenog niza. Vraća se jednodimenzionalni niz koji sadrži elemente ulaza. Kopija se izrađuje samo kada je potrebna.
java obrnuti niz
Izlaz:
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]])
Primjer 3: Redoslijed indeksa sličan Fortranu
import numpy as np x=np.arange(12) y=np.reshape(x, (4, 3), order='F') x y
Izlaz:
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]])
U gornjem kodu
- Uvezli smo numpy s alias imenom np.
- Stvorili smo niz 'a' pomoću funkcije np.arrange().
- Deklarirali smo varijablu 'y' i dodijelili vraćenu vrijednost funkcije np.reshape().
- Proslijedili smo niz 'x' i oblik i redoslijed indeksa sličan Fortranu u funkciji.
- Na kraju, pokušali smo ispisati vrijednost arr.
U izlazu, niz je predstavljen kao četiri retka i tri stupca.
Primjer 4: Redoslijed indeksa sličan Fortranu
import numpy as np x=np.arange(12) y=np.reshape(np.ravel(x, order='F'), (4, 3), order='F') x y
Izlaz:
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]])
Primjer 5: pretpostavlja se da je neodređena vrijednost 2
import numpy as np x=np.arange(12) y=np.reshape(x, (2, -1)) x y
U gornjem kodu
- Uvezli smo numpy s alias imenom np.
- Stvorili smo niz 'a' pomoću funkcije np.arrange().
- Deklarirali smo varijablu 'y' i dodijelili vraćenu vrijednost funkcije np.reshape().
- Proslijedili smo niz 'x' i oblik (nespecificirana vrijednost) u funkciji.
- Na kraju, pokušali smo ispisati vrijednost arr.
U izlazu, niz je predstavljen kao dva retka i pet stupaca.
Izlaz:
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]])