NumPy a Python: Creació d'Arrays, Slicing i Vectors

Apunts de Recursos Informàtics (UB) sobre el mòdul NumPy: generació amb linspace i arange, slicing, atributs de vectors i càlculs vectoritzats.

Recursos Informàtics · Universitat de Barcelona · Grau en Química · 1r curs

13 pàgines · 3 temes · 6 flashcards · 12 preguntes tipus test

Índex

  1. Creació i generació d'arrays amb NumPy · p. 3-6
  2. Indexació, slicing i propietats dels arrays · p. 6-8
  3. Operacions vectoritzades i funcions universals · p. 8-12

Creació i generació d'arrays amb NumPy

Flashcards

Quin vector produeix la comanda numpy.arange(1, 10, 1)?
Produeix el vector [1 2 3 4 5 6 7 8 9], ja que el límit superior s'exclou.
Com es crea un vector de 10 zeros utilitzant NumPy?
Es crea mitjançant la instrucció numpy.zeros(10).

Preguntes tipus test

  1. Què determina el tercer argument a numpy.linspace?
    • a) La dimensió del vector
    • b) La distància de pas
    • c) El nombre total de punts
    • d) El valor de l'extrem màxim

    Resposta: c) El nombre total de punts. A linspace el tercer paràmetre és la quantitat de valors que contindrà la partició generada.

  2. Quin resultat produeix numpy.arange(1, 5, 1)?
    • a) [1 2 3 4]
    • b) [1 2 3 4 5]
    • c) [2 3 4 5]
    • d) [1 3 5]

    Resposta: a) [1 2 3 4]. El límit dret (5) no s'inclou mai a la seqüència generada per arange.

  3. Quina funció genera nombres flotants aleatoris en NumPy?
    • a) numpy.randval
    • b) numpy.ones
    • c) numpy.zeros
    • d) numpy.random.random

    Resposta: d) numpy.random.random. La funció numpy.random.random genera una col·lecció de nombres aleatoris.

Indexació, slicing i propietats dels arrays

Flashcards

Quin valor tindrà l'atribut vector.ndim per a qualsevol vector unidimensional?
Tindrà el valor 1.
Com s'expressa el shape d'un array de 4 elements d'una sola dimensió?
S'expressa com la tupla (4,).

Preguntes tipus test

  1. Què obtens en executar vec[2:6]?
    • a) Els primers 4 elements
    • b) Elements des del 0 al 6 amb pas 2
    • c) Elements de l'índex 2 al 6
    • d) Elements de l'índex 2 al 5

    Resposta: d) Elements de l'índex 2 al 5. El límit superior a l'slicing s'exclou, de manera que arriba fins a 6 - 1 = 5.

  2. Quin atribut indica el nombre total d'elements d'un array?
    • a) size
    • b) len
    • c) ndim
    • d) shape

    Resposta: a) size. L'atribut .size emmagatzema el nombre total d'entrades o components de l'array.

  3. Com se selecciona un vector sencer utilitzant la notació de tall?
    • a) vec[0]
    • b) vec[all]
    • c) vec[:]
    • d) vec[1:-1]

    Resposta: c) vec[:]. La sintaxi vec[:] selecciona tots els elements des del principi fins al final.

Operacions vectoritzades i funcions universals

Flashcards

Què genera el càlcul w = u + v quan u = numpy.array([1, 2]) i v = numpy.array([3, 4])?
Genera el vector resultant [4, 6].
Com s'aplica el logaritme en base 10 a un array complet anomenat dades?
S'aplica directament mitjançant la instrucció numpy.log10(dades).

Preguntes tipus test

  1. Quin és el resultat de sumar u = [1, 2] i v = [3, 4] sent arrays NumPy?
    • a) [1, 2, 3, 4]
    • b) [4, 6]
    • c) [3, 8]
    • d) [[1, 2], [3, 4]]

    Resposta: b) [4, 6]. En NumPy l'operador suma actua de forma vectorial afegint component a component.

  2. Quin requisit és obligatori per fer la suma aritmètica directa de dos vectors?
    • a) Haver estat creats amb linspace
    • b) Tenir la mateixa longitud
    • c) Començar pel número zero
    • d) Contenir exclusivament valors enters

    Resposta: b) Tenir la mateixa longitud. Els vectors han de coincidir en mida per poder sumar les seves components parella a parella.

  3. Si a = numpy.array([10, 100]), quin resultat dóna numpy.log10(a)?
    • a) [0., 1.]
    • b) [1., 2.]
    • c) [1., 10.]
    • d) [10., 20.]

    Resposta: b) [1., 2.]. El logaritme en base 10 de 10 és 1, i de 100 és 2.

I 0 flashcards i 3 preguntes més al document.

Text del document

APUNTS RECURSOS INFORMÀTICS Grau en Química Universitat de Barcelona AprenAI 2026-2027 Apunts de Recursos Informàtics (UB) sobre el mòdul NumPy: generació amb linspace i arange, slicing, atributs de vectors i càlculs vectoritzats.

APREN.AI Índex 1 Creació i generació d'arrays amb NumPy Generació de valors equiespaiats Arrays inicialitzats amb zeros, uns i valors aleatoris 2 Indexació, slicing i propietats dels arrays Indexació i partició (slicing) de vectors Atributs fonamentals d'un array 3 Operacions vectoritzades i funcions universals Operacions escalars i aritmètica de vectors Funcions matemàtiques universals 4 Formulari Creació i generació d'arrays Indexació, partició (slicing) i atributs Operacions vectorials i funcions universals Errors típics Solucions de les preguntes de repàs Aquests apunts poden contenir errors o omissions.

Són un material de suport i no substitueixen el temari oficial ni el professorat: contrasta la informació important. NumPy a Python: Creació d'Arrays, Slicing i Vectors 1 1 Creació i generació d'arrays amb NumPy EN ACABAR SABRÀS Crear vectors equiespaiats utilitzant numpy.linspace i numpy.arange Inicialitzar arrays unidimensionals amb zeros, uns o valors aleatoris Identificar les diferències entre les llistes natives de Python i els arrays de NumPy PENSA-HI ABANS DE LLEGIR 1 Com podem generar 100 punts entre 0 i 1 sense haver d'escriure un bucle que càlculi cadascun dels passos?

En la programació científica clàssica amb Python pur, generar successions de nombres requereix inicialitzar llistes buides, calcular increments manuals i utilitzar bucles for o while . El mòdul numpy simplifica aquesta feina i optimitza la memòria mitjançant estructures de dades vectoritzades. Generació de valors equiespaiats Per generar una seqüència de punts distribuïts regularment entre dos límits, disposem de dues funcions essencials segons si coneixem el nombre de punts o el pas entre ells: numpy.linspace(inici, final, punts, incloure_ultim): genera una quantitat prefixada de mostres equiespaiades en un interval tancat o semi-obert.

numpy.arange(start, stop, step): construeix valors des del límit inicial fins a arribar a l'extrem final (sense incloure'l) avançant amb el pas especificat. DEFINICIÓ Un array de NumPy és una estructura numèrica homogènia que permet emmagatzemar col·leccions ordenades de nombres i operar sobre tots ells alhora de forma eficient.

Funció de creació Paràmetres principals Descripció del resultat Exemple d'ús numpy.linspace start, stop, num, endpoint Vector amb num punts equiespaiats numpy.linspace(-10, 10, 10, True) numpy.arange start, stop, step Seqüència des d'inici fins a final (exclòs) amb increment fix numpy.arange(1, 10, 1) numpy.zeros shape / mida Vector o matriu amb totes les entrades igualades a zero (float) numpy.zeros(10) NumPy a Python: Creació d'Arrays, Slicing i Vectors 2 Funció de creació Paràmetres principals Descripció del resultat Exemple d'ús numpy.ones shape / mida Vector o matriu ple d'uns en format real numpy.ones(10) numpy.random.random mida Valors pseudoaleatoris continus numpy.random.random(10) Quan executem numpy.arange(1, 10, 1) , obtenim directament el conjunt de valors enters [1 2 3 4 5 6 7 8 9] , estalviant-nos l'ús de funcions de control de flux.

COMPROVA-HO 2 Quina és la diferència principal entre fer servir linspace i arange per crear un vector? Arrays inicialitzats amb zeros, uns i valors aleatoris Abans d'emmagatzemar mesures calculades o dades introduïdes per l'usuari, sovint cal reservar un espai en memòria mitjançant vectors inicialitzats per defecte: ERROR FREQÜENT Confondre l'extrem final de arange amb el de linspace . La funció arange(1, 10, 1) s'atura abans del 10 i genera elements de l'1 al 9, mentre que linspace(..., True) conté obligatòriament el límit final indicat. Inicialització buida amb zeros: x = numpy.zeros(n) crea un vector de longitud format per components 0. .

1 n Inicialització unitària: x = numpy.ones(n) crea elements iguals a 1. . 2 n Inicialització aleatòria: x = numpy.random.random(n) genera valors aleatoris. 3 n NumPy a Python: Creació d'Arrays, Slicing i Vectors 3 ESQUEMA Mètodes de generació d'arrays en NumPy IDEES CLAU NumPy evita crear bucles manuals i inicialitzar llistes buides per generar intervals. La instrucció numpy.linspace requereix saber el nombre total d'elements desitjats. La instrucció numpy.arange necessita l'increment exacte entre mostres consecutives. Les funcions numpy.zeros, ones i random.random permeten reservar memòria de mida prefixada. COMPROVA EL QUE HAS APRÈS 3.

Quin vector produeix la comanda numpy.arange(1, 10, 1)? 4. Com es crea un vector de 10 zeros utilitzant NumPy? Test Encercla la resposta correcta. Les solucions són al final. 5. Què determina el tercer argument a numpy.linspace? 6. Quin resultat produeix numpy.arange(1, 5, 1)? Generació d'arrays Formes principals de crear vectors Equiespaiats Segons nombre de punts o pas linspace Control per nombre total de mostres arange Control per mida del pas Valors constants o mostres Reserva de memòria inicial zeros i ones Vectors inicials de 0. o 1.

random.random Dades inicials pseudoaleatòries La dimensió del vector a) La distància de pas b) El nombre total de punts c) El valor de l'extrem màxim d) [1 2 3 4] a) [1 2 3 4 5] b) [2 3 4 5] c) [1 3 5] d) NumPy a Python: Creació d'Arrays, Slicing i Vectors 4 7. Quina funció genera nombres flotants aleatoris en NumPy? 8. Quin tipus de dades s'obté en crear numpy.zeros(5)?

2 Indexació, slicing i propietats dels arrays EN ACABAR SABRÀS Aplicar el tall (slicing) per extreure seccions d'un vector d'un sol eix Distingir entre els atributs ndim, shape i size d'un array NumPy Convertir llistes convencionals de Python a estructures np.array PENSA-HI ABANS DE LLEGIR 9 Com podem agafar només els elements parells o alternats d'un array sense fer un condicional if? Un cop hem creat un array o hem convertit una llista amb numpy.array() , podem consultar-ne les característiques estructurals i accedir als seus elements mitjançant indexació i slicing.

Indexació i partició (slicing) de vectors El slicing permet extreure subconjunts continus o periòdics d'un vector vec mitjançant la sintaxi general vec[start:end:step] : vec[start:end:step] : extrau des de la posició start fins a end - 1 amb salts de mida step . vec[start:end] : agafa tots els elements des de start fins a end - 1 (amb pas unitari). vec[start:] : selecciona des de l'índex start fins a l'últim element inclòs. vec[:end] : agafa des de la primera posició de l'array fins a end - 1 . vec[:] : retorna la totalitat dels elements del vector. Aquesta notació s'aplica tant per consultar rangs com per iterar sobre posicions concretes introduïdes amb vec[i] = float(...) .

COMPROVA-HO 10 Quins elements selecciona l'expressió vec[:3] sobre un vector de 5 posicions?

numpy.randval a) numpy.ones b) numpy.zeros c) numpy.random.random d) Nombres reals (float) a) Cadenes de text buides b) Valors booleans falsos c) Nombres enters purs d) NumPy a Python: Creació d'Arrays, Slicing i Vectors 5 Atributs fonamentals d'un array Podem conèixer l'estructura geomètrica d'un array sense necessitat de recórrer-lo mitjançant els seus atributs natius: Atribut Significat Exemple per a vector de 3 components .ndim Nombre de dimensions de l'estructura (eixos) 1 .shape Tupla que descriu la quantitat d'elements per eix (3,) .size Quantitat total d'elements que conté l'array 3 Per exemple, si es construeix un vector a partir d'una llista de tres elements [1.0, 0.0, -2.0] convertida amb np.array() , la consulta de ndim donarà 1 , shape donarà (3,) i la mida size serà igual a 3 .

ERROR FREQÜENT Confondre shape (que és una tupla que indica la forma geomètrica de l'array) amb size (que és un enter que compta el nombre total d'elements). En un vector unidimensional shape s'expressa com (n,) . PROCÉS Passos per llegir i caracteritzar un vector amb NumPy 1 Recollida de dades Entrada per teclat dels valors numèrics 2 Construcció de llista Acumulació d'elements amb float() i append() 3 Conversió a array Transformació mitjançant np.array(llista) 4 Inspecció d'atributs Consulta directa de .ndim, .shape i .size IDEES CLAU La sintaxi general vec[start:end:step] selecciona elements des de start fins a end-1.

Ometre límits com vec[start:] o vec[:end] agafa automàticament fins al final o des de l'inici. L'atribut .ndim informa de la dimensió o nombre d'eixos de l'array. L'atribut .shape retorna una tupla amb la mida de cada eix, mentre que .size indica el recompte absolut d'elements. COMPROVA EL QUE HAS APRÈS 11. Quin valor tindrà l'atribut vector.ndim per a qualsevol vector unidimensional? 12. Com s'expressa el shape d'un array de 4 elements d'una sola dimensió? NumPy a Python: Creació d'Arrays, Slicing i Vectors 6 Test Encercla la resposta correcta. Les solucions són al final. 13. Què obtens en executar vec[2:6]? 14. Quin atribut indica el nombre total d'elements d'un array? 15.

Com se selecciona un vector sencer utilitzant la notació de tall? 16. Quina forma té el resultat retornat per l'atribut .shape? 3 Operacions vectoritzades i funcions universals EN ACABAR SABRÀS Executar operacions aritmètiques entre escalars i arrays sense emprar bucles Calcular la suma directa de vectors comprovant prèviament la compatibilitat de dimensions Utilitzar funcions universals com numpy.log10 per a la transformació matemàtica de vectors PENSA-HI ABANS DE LLEGIR 17 Per què en sumar dues llistes a Python s'ajunten en lloc de sumar-se els seus números?

El gran avantatge computacional de NumPy sobre les estructures estàndard de Python és el càlcul vectorial: les operacions aritmètiques i les funcions matemàtiques s'apliquen directament a tots els components de l'array de forma simultània sense haver de recórrer-los amb bucles.

Els primers 4 elements a) Elements des del 0 al 6 amb pas 2 b) Elements de l'índex 2 al 6 c) Elements de l'índex 2 al 5 d) size a) len b) ndim c) shape d) vec[0] a) vec[all] b) vec[:] c) vec[1:-1] d) Una tupla d'enters a) Una cadena de text b) Un nombre enter únic c) Una llista de flotants d) NumPy a Python: Creació d'Arrays, Slicing i Vectors 7 PROCÉS Procés de càlcul vectorial sobre un array de dades 1 Array d'entrada Vector numèric amb dades originals 2 Funció universal / Escalar np.log10() o operació com * 0.1 3 Aplicació simultània Execució paral·lela element a element 4 Array resultant Nou vector transformat amb la mateixa mida Operacions escalars i aritmètica de vectors Quan multipliquem o sumem un escalar a un array, l'operació s'aplica component a component automàticament: Conversió d'unitats: Si tenim dist = numpy.linspace(0.5, 5.0, 25, True) , la instrucció dist = dist * 0.1 multiplica cadascun dels 25 valors per 0.1 de cop.

Desplaçaments: Per canviar de graus Celsius a Kelvin, fer tempKel = tempCel + 273.15 aplica el sumand a tot el vector. Quan s'operen dos vectors entre ells mitjançant w = u + v, la suma es fa posició per posició: EXEMPLE Si tenim els vectors i , la suma directa w = u + v produeix l'array [3. 6. 9.] . En canvi, si féssim servir llistes natives de Python, el símbol + concatenaria les dues llistes donant com a resultat [1, 2, 3, 2, 4, 6] . ERROR FREQÜENT Sumar arrays de mides diferents sense comprovar abans la seva dimensió.

Si len(vec_list1) != len(vec_list2) , la suma directa produeix un error d'execució; cal verificar abans que tinguin la mateixa longitud (o fer servir exit() per interrompre el programa). COMPROVA-HO 18 Què passa si apliquem l'operador + entre dues llistes estàndard davant de fer-ho entre dos arrays NumPy? Funcions matemàtiques universals NumPy inclou funcions matemàtiques preparades per processar arrays sencers immediatament, conegudes com a funcions universals.

Un exemple és el càlcul químic del potencial d'hidrogen (pH): w = i u + i v i u = [1, 2, 3] v = [2, 4, 6] pH = log ([H ]) 10 + NumPy a Python: Creació d'Arrays, Slicing i Vectors 8 En el codi, després d'obtenir l'array de concentracions cH_list = numpy.array(...) , apliquem la funció en bloc sense cap bucle: pH = -(numpy.log10(cH_list)) Si l'usuari introdueix les concentracions , NumPy retorna instantàniament els valors transformats . IDEES CLAU El càlcul vectorial elimina la necessitat d'escriure bucles for per operar sobre conjunts de dades. Multiplicar o sumar una constant a un array distribueix l'operació per tots els seus components.

La suma de dos arrays u + v suma cadascun dels seus elements de forma homologa. Funcions com numpy.log10 actuen com a funcions universals aplicant-se directament sobre tot el vector. COMPROVA EL QUE HAS APRÈS 19. Què genera el càlcul w = u + v quan u = numpy.array([1, 2]) i v = numpy.array([3, 4])? 20. Com s'aplica el logaritme en base 10 a un array complet anomenat dades? Test Encercla la resposta correcta. Les solucions són al final. 21. Quin és el resultat de sumar u = [1, 2] i v = [3, 4] sent arrays NumPy? 22. Quin requisit és obligatori per fer la suma aritmètica directa de dos vectors? 23. Si a = numpy.array([10, 100]), quin resultat dóna numpy.log10(a)? 24.

Com afecta fer vec * 0.1 als elements de l'array vec?

[0,01, 0,001, 0,0001] [2, 3, 4] [1, 2, 3, 4] a) [4, 6] b) [3, 8] c) [[1, 2], [3, 4]] d) Haver estat creats amb linspace a) Tenir la mateixa longitud b) Començar pel número zero c) Contenir exclusivament valors enters d) [0., 1.] a) [1., 2.] b) [1., 10.] c) [10., 20.] d) Retalla el 10% dels elements a) Afegeix 0.1 al final del vector b) Multiplica només el primer valor c) Multiplica cada component per 0.1 d) NumPy a Python: Creació d'Arrays, Slicing i Vectors 9 4 Formulari Creació i generació d'arrays Funció o comanda Paràmetres i significat Quan s'utilitza : inici, : final, : punts, endpoint: incloure extrem (True/False) Generar vectors d'un nombre fix de valors equiespaiats start: inici, stop: límit superior exclòs, step: increment fix Generar seqüències numèriques definides pel pas / : nombre total d'elements del vector Reservar espai en memòria inicialitzat amb 0.

o 1. : quantitat de valors pseudoaleatoris Inicialitzar vectors amb mostres aleatòries flotants llista: llista nativa de Python Convertir dades estàndard a arrays vectoritzats Indexació, partició (slicing) i atributs Sintaxi o atribut Descripció dels elements Quan s'utilitza : índex de la posició (inici a 0) Consultar o assignar una component concreta start: inici inclòs, end: final exclòs, step: salt Extreure segments continus o periòdics d'un vector vector.ndim Nombre d'eixos de l'estructura Comprovar la dimensionalitat (1 per a vectors) vector.shape Tupla amb el nombre d'elements per eix Identificar la forma geomètrica (p. ex.

(n,)) vector.size Enter amb el total d'entrades de l'array Conèixer la mida global del vector Operacions vectorials i funcions universals Operació o procediment Significat de les variables Quan s'utilitza : vectors de mateixa mida; Suma component a component d'arrays numpy.linspace(x , x , n, endpoint) 1 2 x1 x 2 n numpy.arange(start, stop, step) numpy.zeros(n) numpy.ones(n) n numpy.random.random(n) n numpy.array(llista) vec[i] i vec[start : end : step] w = u + v u, v w = i u + i v i NumPy a Python: Creació d'Arrays, Slicing i Vectors 10 Operació o procediment Significat de les variables Quan s'utilitza / : valor escalar constant Transformacions aritmètiques uniformes (escales, unitats) Aplica de forma simultània Càlculs matemàtics en bloc (ex.

càlcul de pH) Suma interactiva de vectors split() de l'string d'entrada conversió a float verificació len(u) == len(v) conversió a np.array u + v Procediment per llegir i sumar vectors per teclat Errors típics Límit superior d'arange: numpy.arange(a, b, s) arriba fins a b - s i no conté mai l'extrem final b . Suma de vectors de mida diferent: intentar sumar dos arrays amb longituds diferents genera un error si no es valida prèviament que len(vec1) == len(vec2) . Confusió entre llistes i arrays: l'operador + concatena llistes tradicionals però suma aritmèticament els arrays de NumPy.

vec k vec + k k numpy.log10(array) log (x ) 10 i NumPy a Python: Creació d'Arrays, Slicing i Vectors 11 Solucions de les preguntes de repàs 1. Utilitzant directament la funció linspace del mòdul NumPy, que reparteix els punts de forma automàtica i uniforme. 2. Amb linspace s'especifica el nombre total de punts que tindrà el vector final, mentre que amb arange es defineix la mida del salt o increment entre valors consecutius. 3. Produeix el vector [1 2 3 4 5 6 7 8 9], ja que el límit superior s'exclou. 4. Es crea mitjançant la instrucció numpy.zeros(10). 5. c) El nombre total de punts. A linspace el tercer paràmetre és la quantitat de valors que contindrà la partició generada. 6. a) [1 2 3 4].

El límit dret (5) no s'inclou mai a la seqüència generada per arange. 7. d) numpy.random.random. La funció numpy.random.random genera una col·lecció de nombres aleatoris. 8. a) Nombres reals (float). Per defecte els elements s'inicialitzen com a valors de coma flotant (0.). 9. Utilitzant el tercer paràmetre del slicing (vec[::2]), que indica la grandària del pas. 10. Selecciona els elements corresponents als índexs 0, 1 i 2, és a dir, des de l'inici fins a la posició anterior al límit 3. 11. Tindrà el valor 1. 12. S'expressa com la tupla (4,). 13. d) Elements de l'índex 2 al 5. El límit superior a l'slicing s'exclou, de manera que arriba fins a 6 - 1 = 5. 14. a) size.

L'atribut .size emmagatzema el nombre total d'entrades o components de l'array. 15. c) vec[:]. La sintaxi vec[:] selecciona tots els elements des del principi fins al final. 16. a) Una tupla d'enters. L'atribut shape retorna sempre una tupla, que per a un vector unidimensional és (n,). 17. Perquè les llistes de Python interpreten el signe + com una concatenació de cadenes o seqüències, mentre que NumPy el tracta com una operació matricial matemàtica. 18. Amb llistes es produeix una concatenació d'elements, mentre que amb arrays NumPy es realitza una suma aritmètica component a component. 19. Genera el vector resultant [4, 6]. 20.

S'aplica directament mitjançant la instrucció numpy.log10(dades). 21. b) [4, 6]. En NumPy l'operador suma actua de forma vectorial afegint component a component. 22. b) Tenir la mateixa longitud. Els vectors han de coincidir en mida per poder sumar les seves components parella a parella. 23. b) [1., 2.]. El logaritme en base 10 de 10 és 1, i de 100 és 2. 24. d) Multiplica cada component per 0.1. Una operació aritmètica amb un escalar es propaga a tots els elements de l'array. NumPy a Python: Creació d'Arrays, Slicing i Vectors 12

Més apunts de Recursos Informàtics

Exàmens, temes i apunts de Recursos Informàtics