np.zeros() și np.ones() în NumPy

Crearea tablourilor NumPy 1.0+

Creează tablouri umplute cu 0 sau cu 1 (sau neinițializate cu np.empty), de forma dorită sau de forma altui tablou.

Sintaxă
np.zeros(shape, dtype=None, order='C')
np.ones(shape, dtype=None, order='C')
np.empty(shape, dtype=None, order='C')
np.zeros_like(a, dtype=None, shape=None)
np.ones_like(a, dtype=None, shape=None)

Ce face np.zeros() și np.ones()

np.zeros() și np.ones() creează un tablou nou de forma dată, plin cu 0, respectiv cu 1. Forma este un număr (pentru 1D) sau un tuplu, de exemplu (2, 3) pentru 2 rânduri și 3 coloane. Tipul implicit este float64.

np.zeros_like(a) și np.ones_like(a) creează un tablou cu aceeași formă și același tip ca tabloul a. Sunt utile când vrei un tablou „pereche” pentru rezultate.

np.empty() doar rezervă memoria, fără să scrie nimic în ea. Valorile de la început sunt nedefinite (orice se afla în memorie), așa că folosește-l doar dacă urmează să completezi toate elementele.

Parametri

Parametru Descriere
shape Forma: un întreg (5) sau un tuplu ((2, 3)).
dtype Tipul elementelor. Implicit float64 pentru zeros/ones/empty; la variantele _like, tipul lui a.
a La zeros_like/ones_like: tabloul de la care se iau forma și tipul.
order Ordinea în memorie: 'C' (pe rânduri, implicit) sau 'F' (pe coloane).

Ce returnează

Un tablou nou de forma cerută.

Exemple

Exemplul 1: Zerouri și unu

import numpy as np

print(np.zeros(4))
print(np.ones((2, 3)))
print(np.zeros((2, 2), dtype=int))

Rezultat

[0. 0. 0. 0.]
[[1. 1. 1.]
 [1. 1. 1.]]
[[0 0]
 [0 0]]

Exemplul 2: zeros_like și ones_like

Rezultatul are forma și tipul (aici int64) tabloului de pornire.

import numpy as np

vanzari = np.array([[120, 95, 130],
                    [80, 110, 105]])

bonus = np.zeros_like(vanzari)
prezenta = np.ones_like(vanzari)
print(bonus)
print(prezenta)
print(bonus.dtype, bonus.shape)

Rezultat

[[0 0 0]
 [0 0 0]]
[[1 1 1]
 [1 1 1]]
int64 (2, 3)

Exemplul 3: np.empty, completat apoi

Nu afișăm conținutul imediat după np.empty: valorile sunt nedefinite. Le completăm întâi pe toate.

import numpy as np

patrate = np.empty(5)
print("Forma:", patrate.shape, "tip:", patrate.dtype)

for i in range(5):
    patrate[i] = i ** 2
print(patrate)

Rezultat

Forma: (5,) tip: float64
[ 0.  1.  4.  9. 16.]

Greșeli frecvente

  • Dai forma ca două argumente: np.zeros(2, 3) dă eroare (al doilea argument este dtype). Forma 2D se dă ca tuplu: np.zeros((2, 3)).
  • Folosești np.empty crezând că dă zerouri. Valorile sunt cele rămase în memorie și pot fi orice; pentru zerouri folosește np.zeros.
  • Pui numere zecimale într-un tablou creat cu zeros_like dintr-un tablou de întregi: valorile sunt trunchiate (2.7 devine 2). Dă dtype=float.

Comenzi înrudite

  • np.full(): Creează un tablou de forma dorită, umplut peste tot cu aceeași valoare.
  • np.eye() și np.identity(): Creează o matrice cu 1 pe diagonală și 0 în rest (matricea identitate).
  • np.array(): Creează un tablou NumPy (ndarray) dintr-o listă, o listă de liste sau alt obiect asemănător.
  • ndarray.shape: Află forma unui tablou (rânduri, coloane), numărul de dimensiuni și numărul total de elemente.