logo

numpy.reshape() a Python

La funció numpy.reshape() està disponible al paquet NumPy. Com el seu nom indica, remodelar significa 'canvis de forma'. La funció numpy.reshape() ens ajuda a obtenir una nova forma a una matriu sense canviar les seves dades.

De vegades, hem de remodelar les dades d'ample a llarg. Per tant, en aquesta situació, hem de remodelar la matriu utilitzant la funció reshape().

Sintaxi

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

Paràmetres

Hi ha els següents paràmetres de la funció reshape():

1) arr: array_like

Això és un ndarray. Aquesta és la matriu font que volem remodelar. Aquest paràmetre és essencial i té un paper vital en la funció numpy.reshape().

tutorial de swing de java

2) nova_forma: int o tupla d'ints

La forma en què volem convertir la nostra matriu original hauria de ser compatible amb la matriu original. Si és un nombre enter, el resultat serà una matriu 1-D d'aquesta longitud. Una dimensió de forma pot ser -1. Aquí, el valor s'aproxima per la longitud de la matriu i les dimensions restants.

3) ordre: {'C', 'F', 'A'}, opcional

Aquests paràmetres d'ordre dels índexs tenen un paper crucial en la funció reshape(). Aquestes ordres d'índex s'utilitzen per llegir els elements de la matriu d'origen i col·locar els elements a la matriu remodelada mitjançant aquest ordre d'índex.

  1. L'ordre d'índex 'C' significa llegir/escriure els elements que utilitzen un ordre d'índex semblant a C on l'índex de l'últim eix canvia més ràpidament, tornant a l'índex del primer eix que canvia més lentament.
  2. L'ordre de l'índex 'F' significa llegir/escriure els elements que utilitzen l'ordre d'índex semblant a Fortran, on l'índex de l'últim eix canvia més lentament i l'índex del primer eix canvia més ràpidament.
  3. L'ordre 'C' i 'F' no prenen cap quantitat de la disposició de memòria de la matriu subjacent i només fan referència a l'ordre d'indexació.
  4. L'ordre d'índex 'A' significa llegir/escriure els elements en un ordre d'índex semblant a Fortran, quan arr és contigu a la memòria, en cas contrari, utilitzeu un ordre semblant a C.

Devolucions

Aquesta funció retorna un ndarray. És un nou objecte de vista si és possible; en cas contrari, serà una còpia. No hi ha cap garantia de la disposició de memòria de la matriu retornada.

Exemple 1: ordenació de l'índex de tipus C

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

Sortida:

 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]]) 

En el codi anterior

  • Hem importat numpy amb el nom d'àlies np.
  • Hem creat una matriu 'a' utilitzant la funció np.arrange().
  • Hem declarat la variable 'y' i hem assignat el valor retornat de la funció np.reshape().
  • Hem passat la matriu 'x' i la forma a la funció.
  • Finalment, hem intentat imprimir el valor de arr.

A la sortida, la matriu s'ha representat com tres files i quatre columnes.

Exemple 2: equivalent a C ravel i després a C remodelar

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

La funció ravel() s'utilitza per crear una matriu aplanada contigua. Es retorna una matriu unidimensional que conté els elements de l'entrada. Només es fa una còpia quan és necessària.

string java indexof

Sortida:

 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]]) 

Exemple 3: ordenació de l'índex semblant a Fortran

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

Sortida:

 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]]) 

En el codi anterior

  • Hem importat numpy amb el nom d'àlies np.
  • Hem creat una matriu 'a' utilitzant la funció np.arrange().
  • Hem declarat la variable 'y' i hem assignat el valor retornat de la funció np.reshape().
  • Hem passat la matriu 'x' i la forma i l'ordre de l'índex de Fortran a la funció.
  • Finalment, hem intentat imprimir el valor de arr.

A la sortida, la matriu s'ha representat com a quatre files i tres columnes.

Exemple 4: ordenació de l'índex semblant a Fortran

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

Sortida:

 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]]) 

Exemple 5: es dedueix que el valor no especificat és 2

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

En el codi anterior

  • Hem importat numpy amb el nom d'àlies np.
  • Hem creat una matriu 'a' utilitzant la funció np.arrange().
  • Hem declarat la variable 'y' i hem assignat el valor retornat de la funció np.reshape().
  • Hem passat la matriu 'x' i la forma (valor no especificat) a la funció.
  • Finalment, hem intentat imprimir el valor de arr.

A la sortida, la matriu s'ha representat com dues files i cinc columnes.

Sortida:

 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]])