np.arange() în NumPy

Crearea tablourilor NumPy 1.0+

Creează un tablou cu valori din pas în pas, de la start până la stop (stop nu este inclus), ca range() din Python.

Sintaxă
np.arange([start, ]stop, [step, ]dtype=None)

Ce face np.arange()

np.arange() funcționează ca range() din Python, dar returnează direct un tablou NumPy. Cu un singur argument numără de la 0; cu două primește începutul și sfârșitul; al treilea este pasul.

Valoarea stop nu este inclusă: np.arange(1, 5) dă [1 2 3 4]. Spre deosebire de range(), arange acceptă și pași zecimali.

Cu pași zecimali (de exemplu 0.1), numărul de elemente poate ieși diferit de cel așteptat, din cauza rotunjirilor din calculul cu virgulă mobilă. Pentru un număr exact de puncte între două valori folosește np.linspace().

Parametri

Parametru Descriere
start Opțional. Prima valoare. Implicit 0.
stop Valoarea la care se oprește. Nu este inclusă în rezultat.
step Opțional. Distanța dintre două valori. Implicit 1. Poate fi negativă.
dtype Tipul elementelor. Implicit este dedus din argumente.

Ce returnează

Un tablou 1D cu valorile din interval.

Exemple

Exemplul 1: Unu, două sau trei argumente

import numpy as np

print(np.arange(5))
print(np.arange(1, 13))
print(np.arange(0, 101, 25))
print(np.arange(10, 0, -3))

Rezultat

[0 1 2 3 4]
[ 1  2  3  4  5  6  7  8  9 10 11 12]
[  0  25  50  75 100]
[10  7  4  1]

Exemplul 2: Pas zecimal

Prețurile de la 1 la 2 lei din 0.25 în 0.25. Valoarea 2.0 nu apare, pentru că stop este exclus.

import numpy as np

preturi = np.arange(1, 2, 0.25)
print(preturi)
print("Elemente:", len(preturi))

Rezultat

[1.   1.25 1.5  1.75]
Elemente: 4

Exemplul 3: Problema pasului zecimal

Teoretic ar trebui să obții 1.0, 1.1 și 1.2, dar din cauza rotunjirii apare și 1.3. Cu linspace numărul de puncte este cel cerut.

import numpy as np

a = np.arange(1, 1.3, 0.1)
print(a, "->", len(a), "elemente")

b = np.linspace(1, 1.2, 3)
print(b, "->", len(b), "elemente")

Rezultat

[1.  1.1 1.2 1.3] -> 4 elemente
[1.  1.1 1.2] -> 3 elemente

Greșeli frecvente

  • Crezi că stop este inclus: np.arange(1, 10) se oprește la 9.
  • Folosești pași zecimali și te bazezi pe numărul de elemente. Rotunjirile pot adăuga sau scoate un element; folosește np.linspace().
  • Pui un pas pozitiv când start este mai mare decât stop: np.arange(10, 0) dă un tablou gol. Pentru numărătoare inversă pasul trebuie să fie negativ.

Comenzi înrudite

  • np.linspace(): Creează un număr fix de valori egal distanțate între start și stop, inclusiv capetele.
  • np.array(): Creează un tablou NumPy (ndarray) dintr-o listă, o listă de liste sau alt obiect asemănător.
  • ndarray.reshape(): Schimbă forma unui tablou (de exemplu din 12 elemente în 3 x 4) fără să-i schimbe datele.