Poslednjih godina, upotreba Pythona u različitim oblastima eksponencijalno se proširila, posebno u oblasti manipulacije podacima i naučnog računarstva. Jedna od najčešće korišćenih biblioteka za ove zadatke je NumPy. NumPy je moćna i svestrana biblioteka koja se intenzivno koristi za rad sa velikim, višedimenzionalnim nizovima i matricama, između ostalih matematičkih funkcija. Jedna uobičajena operacija u radu sa ovim strukturama podataka je potreba da se skupi ili smanji posljednja dimenzija niza. U ovom članku ćemo detaljno istražiti ovu temu, počevši od uvoda u problem, nakon čega slijedi rješenje i objašnjenje koda korak po korak. Konačno, ući ćemo u neke srodne teme i biblioteke koje bi mogle biti od interesa.
Potreba da srušiti posljednju dimenziju niza može nastati u različitim situacijama, kao što je kada ste izračunali rezultat iz višedimenzionalnog niza i želite da dobijete jednostavniju, redukovanu reprezentaciju podataka. Ova operacija u suštini uključuje transformaciju originalnog niza u jedan sa manje dimenzija eliminacijom ili sažimanjem posljednje dimenzije duž njegove ose.
Rješenje: Upotreba np.squeeze
Jedan od načina za rješavanje ovog problema je korištenje numpy.squeeze funkcija. Ova funkcija uklanja jednodimenzionalne unose iz oblika ulaznog niza.
import numpy as np arr = np.random.rand(2, 3, 1) print("Original array shape:", arr.shape) collapsed_arr = np.squeeze(arr, axis=-1) print("Collapsed array shape:", collapsed_arr.shape)
Objašnjenje korak po korak
Hajde da sada razbijemo kod i shvatimo kako on funkcionira.
1. Prvo uvozimo NumPy biblioteku kao np:
import numpy as np
2. Zatim kreiramo nasumični 3-dimenzionalni niz oblika (2, 3, 1):
arr = np.random.rand(2, 3, 1) print("Original array shape:", arr.shape)
3. Sada koristimo np.squeeze funkciju za sažimanje zadnje dimenzije niza navođenjem osa parametar kao -1:
collapsed_arr = np.squeeze(arr, axis=-1) print("Collapsed array shape:", collapsed_arr.shape)
4. Kao rezultat, dobijamo novi niz oblika (2, 3), što ukazuje da je posljednja dimenzija uspješno skupljena.
Alternativno rješenje: preoblikovati
Drugi način za sažimanje posljednje dimenzije je korištenje numpy.reshape funkcionirati s odgovarajućim parametrima za postizanje željenog rezultata.
collapsed_arr_reshape = arr.reshape(2, 3) print("Collapsed array shape using reshape:", collapsed_arr_reshape.shape)
U ovom slučaju, eksplicitno smo preoblikovali originalni niz tako da ima oblik (2, 3), efektivno sažimajući posljednju dimenziju.
Povezane biblioteke i funkcije
Osim NumPy-ja, postoji nekoliko drugih biblioteka u Python ekosistemu koje nude alate za rad sa nizovima i matricama. Jedna takva biblioteka je SciPy, koji se nadograđuje na NumPy i pruža dodatnu funkcionalnost za naučno računarstvo. U domenu mašinskog učenja, biblioteka TensorFlow takođe radi sa tenzorima (tj. višedimenzionalnim nizovima) i obezbeđuje sopstveni skup funkcija za manipulaciju matricom. Osim toga, the Pandas biblioteka se može koristiti za manipulaciju DataFrames, struktura podataka višeg nivoa koja se može smatrati tablicama koje sadrže nizove. Nadalje, the numpy.newaxis Operacija vam omogućava da dodate novu os u niz, što može biti korisno kada trebate proširiti dimenzije niza kako bi odgovarale obliku potrebnom za operaciju.
U zaključku, sposobnost da se efikasno manipuliše i radi sa nizovima je suštinska veština u svetu programiranja i nauke o podacima. NumPy je izuzetno moćna biblioteka koja pruža opsežnu funkcionalnost, a razumijevanje tehnika kao što je sažimanje posljednje dimenzije će biti od koristi u raznim situacijama kada se radi o velikim i složenim skupovima podataka.