np.array() în NumPy

Crearea tablourilor NumPy 1.0+

Creează un tablou NumPy (ndarray) dintr-o listă, o listă de liste sau alt obiect asemănător.

Sintaxă
np.array(object, dtype=None, *, copy=True, order='K', subok=False, ndmin=0, ndmax=0, like=None)

Ce face np.array()

np.array() este felul obișnuit de a transforma datele tale Python într-un tablou NumPy. Dintr-o listă simplă obții un tablou cu o dimensiune (1D), dintr-o listă de liste un tablou cu două dimensiuni (2D, ca un tabel cu rânduri și coloane).

Toate elementele unui tablou au același tip. Dacă amesteci numere întregi cu numere zecimale, NumPy le transformă pe toate în float64. Cu parametrul dtype alegi singur tipul.

Spre deosebire de o listă, pe un tablou poți face calcule dintr-odată: preturi * 2 dublează fiecare element, fără buclă.

Parametri

Parametru Descriere
object Datele: o listă, o listă de liste, un tuplu sau alt tablou.
dtype Tipul elementelor, de exemplu int, float, "float32". Implicit este ales din date.
copy Implicit True: datele sunt copiate. Cu copy=False NumPy nu copiază, iar dacă o copie este totuși necesară apare ValueError.
ndmin Numărul minim de dimensiuni al rezultatului. Dimensiunile lipsă se adaugă în față.

Ce returnează

Un obiect ndarray nou.

Exemple

Exemplul 1: Din listă și din listă de liste

O listă dă un tablou 1D; o listă de liste de aceeași lungime dă un tablou 2D.

import numpy as np

note = np.array([9, 7, 10, 8])
print(note)
print(type(note))

vanzari = np.array([[120, 95, 130],
                    [80, 110, 105]])
print(vanzari)
print("Dimensiuni:", vanzari.ndim)

Rezultat

[ 9  7 10  8]
<class 'numpy.ndarray'>
[[120  95 130]
 [ 80 110 105]]
Dimensiuni: 2

Exemplul 2: Tipul ales automat și dtype

Un singur număr zecimal face tot tabloul float64. Cu dtype=float ceri explicit numere zecimale.

import numpy as np

a = np.array([1, 2, 3])
b = np.array([1, 2.5, 3])
c = np.array([1, 2, 3], dtype=float)

print(a, a.dtype)
print(b, b.dtype)
print(c, c.dtype)

Rezultat

[1 2 3] int64
[1.  2.5 3. ] float64
[1. 2. 3.] float64

Exemplul 3: Calcule pe tot tabloul

Operația se aplică fiecărui element. Cu o listă Python, * 2 ar repeta lista.

import numpy as np

preturi_lista = [12, 30, 45]
preturi = np.array(preturi_lista)

print(preturi_lista * 2)
print(preturi * 2)
print(preturi * 1.19)

Rezultat

[12, 30, 45, 12, 30, 45]
[24 60 90]
[14.28 35.7  53.55]

Greșeli frecvente

  • Dai numerele ca argumente separate: np.array(1, 2, 3) dă TypeError. Datele se dau într-o singură listă: np.array([1, 2, 3]).
  • Pui în listă rânduri de lungimi diferite: np.array([[1, 2], [3]]) dă ValueError, pentru că un tablou 2D trebuie să fie dreptunghiular.
  • Te aștepți ca np.array([1, 2, 3]) / 2 să rămână întreg. Împărțirea cu / dă mereu float64; pentru împărțire întreagă folosește //.

Comenzi înrudite

  • np.arange(): Creează un tablou cu valori din pas în pas, de la start până la stop (stop nu este inclus), ca range() din Python.
  • np.zeros() și np.ones(): Creează tablouri umplute cu 0 sau cu 1 (sau neinițializate cu np.empty), de forma dorită sau de forma altui tablou.
  • ndarray.dtype: Arată tipul elementelor dintr-un tablou (int64, float64, bool etc.) și câți octeți ocupă fiecare.
  • ndarray.shape: Află forma unui tablou (rânduri, coloane), numărul de dimensiuni și numărul total de elemente.