Python NumPy vodič za početnike: učite na primjerima

U čemu je NumPy Python?

numpy je biblioteka otvorenog koda dostupna u Python, koji pomaže u matematičkom, znanstvenom, inženjerskom i podatkovnom programiranju. To je vrlo korisna biblioteka za izvođenje matematičkih i statističkih operacija Python. Savršeno radi za višedimenzionalne nizove i množenje matrica. Lako se integrira sa C/C++ i Fortran.

Za svaki znanstveni projekt, NumPy je alat koji treba znati. Napravljen je za rad s N-dimenzionalnim nizom, linearnom algebrom, slučajnim brojevima, Fourierovom transformacijom itd.

NumPy je programski jezik koji se bavi višedimenzionalnim nizovima i matricama. Povrh nizova i matrica, NumPy podržava veliki broj matematičkih operacija. U ovom ćemo dijelu pregledati bitne funkcije koje trebate znati za poduku o 'TensorFlow'.

Zašto koristiti NumPy?

NumPy je memorijski učinkovit, što znači da može obraditi ogromnu količinu podataka dostupnijih od bilo koje druge knjižnice. Osim toga, NumPy je vrlo zgodan za rad, posebno za množenje i preoblikovanje matrica. Povrh svega, NumPy je brz. Zapravo, TensorFlow i Scikit uče koristiti niz NumPy za izračunavanje množenja matrica u pozadini.

Kako instalirati NumPy

Za instaliranje biblioteke NumPy pogledajte naš vodič Kako instalirati TensorFlow. NumPy je instaliran prema zadanim postavkama s Anacondom.

U udaljenom slučaju, NumPy nije instaliran-

NumPy možete instalirati pomoću Anaconde:

conda install -c anaconda numpy
  • In Jupyter bilježnica:
import sys
!conda install --yes --prefix {sys.prefix} numpy

Uvezite NumPy i provjerite verziju

Naredba za uvoz numpyja je:

import numpy as np

Gornji kod preimenuje imenski prostor Numpy u np. To nam dopušta da pred Numpy funkciju, metode i atribute stavimo ” np ” umjesto da upišemo ” numpy.” To je standardni prečac koji ćete pronaći u numpy literaturi

Da biste provjerili instaliranu verziju NumPy-ja, upotrijebite naredbu u nastavku:

print (np.__version__)

Izlaz:

1.18.0

Što je Python NumPy polje?

NumPy nizovi su pomalo slični Python liste, ali istovremeno i vrlo različite. Za vas koji ste novi u ovoj temi, razjasnimo što je to točno i za što je dobro.

Kao što naziv na neki način odaje, NumPy polje središnja je podatkovna struktura numpy knjižnice. Naziv knjižnice zapravo je skraćenica za “Numeric Python” ili “Brojčani Python".

Stvaranje NumPy polja

Najjednostavniji način za stvaranje niza u Numpyju je korištenje Python Popis

myPythonList = [1,9,8,3]

Za pretvaranje python liste u numpy polje pomoću objekta np.array.

numpy_array_from_list = np.array(myPythonList)

Za prikaz sadržaja popisa

numpy_array_from_list

Izlaz:

array([1, 9, 8, 3])

U praksi, nema potrebe deklarirati a Python Popis. Operacija se može kombinirati.

a  = np.array([1,9,8,3])

BILJEŠKA: Numpy dokumentacija navodi korištenje np.ndarray za stvaranje polja. Međutim, ovo je preporučena metoda.

Također možete stvoriti niz numpy iz Tuple.

Matematički Operacije na polju

Na nizu možete izvoditi matematičke operacije poput zbrajanja, oduzimanja, dijeljenja i množenja. Sintaksa je naziv niza iza kojeg slijedi operacija (+.-,*,/) nakon čega slijedi operand

Primjer:

numpy_array_from_list + 10

Izlaz:

array([11, 19, 18, 13])

Ova operacija dodaje 10 svakom elementu niza numpy.

Oblik niza

Možete provjeriti oblik niza s oblikom objekta ispred kojeg stoji naziv niza. Na isti način možete provjeriti vrstu s dtypes.

import numpy as np
a  = np.array([1,2,3])
print(a.shape)
print(a.dtype)

(3,)
int64

Cijeli broj je vrijednost bez decimale. Ako stvorite niz s decimalnim zarezom, tada će se tip promijeniti u float.

#### Different type
b  = np.array([1.1,2.0,3.2])
print(b.dtype)

float64

2 dimenzijski niz

Možete dodati dimenziju sa "," zarezom

Imajte na umu da mora biti unutar zagrada []

### 2 dimension
c = np.array([(1,2,3),
              (4,5,6)])
print(c.shape)
(2, 3)

3 dimenzijski niz

Viša dimenzija može se konstruirati na sljedeći način:

### 3 dimension
d = np.array([
    [[1, 2,3],
        [4, 5, 6]],
    [[7, 8,9],
        [10, 11, 12]]
])
print(d.shape)
(2, 2, 3)
Cilj Kodirati
Stvori niz niz([1,2,3])
ispisati oblik niz([.]).oblik

Što je numpy.zeros()?

numpy.nule() ili np.nule Python koristi se za stvaranje matrice pune nula. numpy.zeros() in Python može se koristiti kada inicijalizirate težine tijekom prve iteracije u TensorFlowu i drugim statističkim zadacima.

Sintaksa funkcije numpy.zeros().

numpy.zeros(shape, dtype=float, order='C')

Python numpy.zeros() Parametri

Ovdje,

  • Oblikujte: je oblik numpy niza nula
  • Dvrsta: je tip podataka u numpy nulama. Nije obavezno. Zadana vrijednost je float64
  • Kako: Zadano je C što je bitan stil retka za numpy.zeros() in Python.

Python numpy.zeros() Primjer

import numpy as np
np.zeros((2,2))

Izlaz:

array([[0., 0.],
          [0., 0.]])

Primjer numpy zero s Datatype

import numpy as np
np.zeros((2,2), dtype=np.int16)

Izlaz:

array([[0, 0],
         [0, 0]], dtype=int16)

Što je numpy.ones()?

funkcija np.ones(). koristi se za stvaranje matrice pune jedinica. numpy.ones() u Python može se koristiti kada inicijalizirate težine tijekom prve iteracije u TensorFlowu i drugim statističkim zadacima.

Python numpy.ones() Sintaksa

numpy.ones(shape, dtype=float, order='C')

Python numpy.ones() parametri

Ovdje,

  • Oblikujte: je oblik np.one Python Poredak
  • Dvrsta: je tip podataka u numpy ones. Nije obavezno. Zadana vrijednost je float64
  • Kako: Zadano je C što je osnovni stil retka.

Python numpy.ones() 2D niz s primjerom vrste podataka

import numpy as np
np.ones((1,2,3), dtype=np.int16)

Izlaz:

array([[[1, 1, 1],        
       [1, 1, 1]]], dtype=int16)

numpy.reshape() funkcija u Python

Python NumPy preoblikovanje funkcija se koristi za oblikovanje niza bez mijenjanja njegovih podataka. U nekim ćete slučajevima možda trebati preoblikovati podatke iz širokih u dugačke. Za to možete koristiti funkciju np.reshape.

Sintaksa np.reshape()

numpy.reshape(a, newShape, order='C')

Ovdje,

a: Niz koji želite preoblikovati

noviOblik: Nove želje oblikuju

Kako: Zadano je C što je osnovni stil retka.

Primjer NumPy Reshape

import numpy as np
e  = np.array([(1,2,3), (4,5,6)])
print(e)
e.reshape(3,2)

Izlaz:

 // Before reshape
[[1 2 3] 
 [4 5 6]]
//After Reshape
array([[1, 2],       
	[3, 4],       
	[5, 6]])

numpy.flatten() u Python

Python NumPy izravnavanje funkcija se koristi za vraćanje kopije niza u jednoj dimenziji. Kada imate posla s nekom neuronskom mrežom kao što je convnet, morate spljoštiti niz. Za to možete koristiti funkcije np.flatten().

Sintaksa np.flatten()

numpy.flatten(order='C')

Ovdje,
Kako: Zadano je C što je osnovni stil retka.

Primjer NumPy Flatten

e.flatten()

Izlaz:

array([1, 2, 3, 4, 5, 6])

U čemu je numpy.hstack(). Python?

Numpy.hstack je funkcija u Python koji se koristi za horizontalno slaganje nizova ulaznih nizova kako bi se napravio jedan niz. Pomoću funkcije hstack() možete vodoravno dodavati podatke. To je vrlo zgodna funkcija u NumPyju.

Proučimo hstack Python s primjerom:

Primjer:

## Horitzontal Stack
import numpy as np
f = np.array([1,2,3])
g = np.array([4,5,6])
print('Horizontal Append:', np.hstack((f, g)))

Izlaz:

Horizontal Append: [1 2 3 4 5 6]

U čemu je numpy.vstack(). Python?

Numpy.vstack je funkcija u Python koji se koristi za okomito slaganje nizova ulaznih nizova kako bi se napravio jedan niz. Pomoću funkcije vstack() možete okomito dodati podatke.

Proučimo to na primjeru:

Primjer:

## Vertical Stack
import numpy as np
f = np.array([1,2,3])
g = np.array([4,5,6])
print('Vertical Append:', np.vstack((f, g)))

Izlaz:

Vertical Append: [[1 2 3]
 [4 5 6]]

Nakon proučavanja NumPy vstack i hstack, naučimo primjer za generiranje slučajnih brojeva u NumPy.

Generiraj nasumično Numbers koristeći NumPy

Za generiranje nasumičnih brojeva za Gaussovu distribuciju upotrijebite:

numpy.random.normal(loc, scale, size)

Ovdje,

  • Loc: sredstvo. Središte distribucije
  • Skala: standardna devijacija.
  • Veličina: broj povrata

Primjer:

## Generate random nmber from normal distribution
normal_array = np.random.normal(5, 0.5, 10)
print(normal_array)			
[5.56171852 4.84233558 4.65392767 4.946659   4.85165567 5.61211317 4.46704244 5.22675736 4.49888936 4.68731125]

Ako se iscrta, distribucija će biti slična sljedećem dijagramu

Primjer za generiranje slučajnog odabira Numbers koristeći NumPy
Primjer za generiranje slučajnog odabira Numbers koristeći NumPy

Funkcija NumPy Asarray

Funkcija asarray() koristi se kada želite pretvoriti unos u polje. Ulaz može biti lista, tuple, ndarray, itd.

Sintaksa:

numpy.asarray(data, dtype=None, order=None)[source]

Ovdje,

datum: Podaci koje želite pretvoriti u niz

dtype: Ovo je neobavezan argument. Ako nije navedeno, vrsta podataka se zaključuje iz ulaznih podataka

Kako: Zadano je C što je osnovni stil retka. Druga opcija je F (Fortan stil)

Primjer:

Razmotrite sljedeću 2-D matricu s četiri retka i četiri stupca ispunjena s 1

import numpy as np
A = np.matrix(np.ones((4,4)))

Ako želite promijeniti vrijednost matrice, ne možete. Razlog je što nije moguće promijeniti kopiju.

np.array(A)[2]=2
print(A)			
[[1. 1. 1. 1.]
 [1. 1. 1. 1.] 
 [1. 1. 1. 1.] 
 [1. 1. 1. 1.]]

Matrica je nepromjenjiva. Možete koristiti asarray ako želite dodati izmjene u izvornom nizu. Da vidimo hoće li se dogoditi bilo kakva promjena kada želite promijeniti vrijednost trećih redaka s vrijednošću 2.

np.asarray(A)[2]=2
print(A)

Objašnjenje koda:

np.asarray(A): pretvara matricu A u niz

[2]: odaberite treće retke

Izlaz:

[[1. 1. 1. 1.] 
      [1. 1. 1. 1.] 
      [2. 2. 2. 2.] # new value 
      [1. 1. 1. 1.]]

Što je numpy.arange()?

numpy.arange() je ugrađena funkcija numpy koja vraća objekt ndarray koji sadrži ravnomjerno raspoređene vrijednosti unutar definiranog intervala. Na primjer, želite stvoriti vrijednosti od 1 do 10; možete koristiti np.arange() u Python funkcija.

Sintaksa:

numpy.arange(start, stop, step, dtype)

Python NumPy parametri rasporeda:

  • početni plan: Početak intervala za np.arange in Python funkcija.
  • zaustaviti: Kraj intervala.
  • Korak: Razmak između vrijednosti. Zadani korak je 1.
  • Dvrsta: je vrsta izlaza polja za NumPy arange in Python.

Primjer:

import numpy np
np.arange(1, 11)

Izlaz:

array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])

Primjer:

Ako želite promijeniti korak u ovoj funkciji NumPy arange in Python na primjer, možete dodati treći broj u zagradi. Promijenit će korak.

import numpy np
np.arange(1, 14, 4)

Izlaz:

array([ 1,  5,  9, 13])

Funkcija NumPy Linspace

Linspace daje ravnomjerno raspoređene uzorke.

Sintaksa:

numpy.linspace(start, stop, num, endpoint)

Ovdje,

  • početni plan: Početna vrijednost niza
  • zaustaviti: Krajnja vrijednost niza
  • U: Broj uzoraka za generiranje. Zadano je 50
  • Endpoint: Ako je True (zadano), stop je zadnja vrijednost. Ako je False, granična vrijednost nije uključena.

Primjer:

Na primjer, može se koristiti za stvaranje 10 vrijednosti od 1 do 5 ravnomjerno raspoređenih.

import numpy as np
np.linspace(1.0, 5.0, num=10)

Izlaz:

array([1.        , 1.44444444, 1.88888889, 2.33333333, 2.77777778,       3.22222222, 3.66666667, 4.11111111, 4.55555556, 5.        ])

Ako ne želite uključiti posljednju znamenku u intervalu, krajnju točku možete postaviti na false

np.linspace(1.0, 5.0, num=5, endpoint=False)

Izlaz:

array([1. , 1.8, 2.6, 3.4, 4.2])

LogSpace NumPy funkcija u Python

LogSpace vraća brojeve s parnim razmacima na logaritamskoj ljestvici. Logspace ima iste parametre kao np.linspace.

Sintaksa:

numpy.logspace(start, stop, num, endpoint)

Primjer:

np.logspace(3.0, 4.0, num=4)

Izlaz:

array([ 1000. ,  2154.43469003,  4641.58883361, 10000.        ])

Konačno, ako želite provjeriti veličinu memorije elementa u nizu, možete koristiti itemsize

x = np.array([1,2,3], dtype=np.complex128)
x.itemsize

Izlaz:

16

Svaki element zauzima 16 bajtova.

Indeksiranje i rezanje Python

Rezanje podataka je trivijalno s numpyjem. Izrezat ćemo matricu "e". Imajte na umu da, u Python, trebate upotrijebiti zagrade da vratite retke ili stupce
Primjer:

## Slice
import numpy as np
e  = np.array([(1,2,3), (4,5,6)])
print(e)
[[1 2 3]
 [4 5 6]]

Zapamtite da s numpy prvi niz/stupac počinje s 0.

## First column
print('First row:', e[0])

## Second col
print('Second row:', e[1])

Izlaz:

First row: [1 2 3]
Second row: [4 5 6]

In Python, kao i mnogi drugi jezici,

  • Vrijednosti prije zareza označavaju retke
  • Vrijednost na pravima označava stupce.
  • Ako želite odabrati stupac, trebate dodati : prije indeksa stupca.
  • : znači da želite sve retke iz odabranog stupca.
print('Second column:', e[:,1])
Second column: [2 5]

Za vraćanje prve dvije vrijednosti drugog reda. Koristite : za odabir svih stupaca do drugog

## Second Row, two values
  print(e[1, :2])			
  [4 5]

Statističke funkcije u Python

NumPy ima dosta korisnih statističkih funkcija za pronalaženje minimuma, maksimuma, percentila standardne devijacije i varijance itd. iz danih elemenata u nizu. Funkcije su objašnjene na sljedeći način −

Numpy je opremljen robusnom statističkom funkcijom kako je navedeno u nastavku

funkcija numpy
Min np.min()
maksimum np.max()
značiti np.mean()
srednja np.medijan()
Standardna devijacija np.std()

Razmotrite sljedeći niz:

Primjer:

import numpy as np
normal_array = np.random.normal(5, 0.5, 10)
print(normal_array)

Izlaz:

[5.56171852 4.84233558 4.65392767 4.946659   4.85165567 5.61211317 4.46704244 5.22675736 4.49888936 4.68731125]

Primjer statističke funkcije NumPy

### Min 
print(np.min(normal_array))

### Max 
print(np.max(normal_array))

### Mean 
print(np.mean(normal_array))

### Median
print(np.median(normal_array))

### Sd
print(np.std(normal_array))

Izlaz:

4.467042435266913
5.612113171990201
4.934841002270593
4.846995625786663
0.3875019367395316

Što je numpy točkasti umnožak?

Numpy.dot produkt je moćna biblioteka za matrično računanje. Na primjer, možete izračunati točkasti umnožak pomoću np.dot. Numpy.dot product je točkasti umnožak a i b. numpy.dot() u Python rukuje 2D nizovima i izvodi množenje matrice.

Sintaksa:

numpy.dot(x, y, out=None)

Parametri

Ovdje,

x, y: Ulazni nizovi. x i y bi trebali biti 1-D ili 2-D da bi funkcija np.dot() radila

van: Ovo je izlazni argument za skalar 1-D polja koji treba vratiti. U suprotnom treba vratiti ndarray.

Povratak

Funkcija numpy.dot() u Python vraća točkasti umnožak dva niza x i y. Funkcija dot() vraća skalar ako su i x i y 1-D; inače vraća niz. Ako je dano 'out', ono se vraća.

podiže

Točkasti proizvod u Python pokreće iznimku ValueError ako posljednja dimenzija x nema istu veličinu kao pretposljednja dimenzija y.

Primjer:

## Linear algebra
### Dot product: product of two arrays
f = np.array([1,2])
g = np.array([4,5])
### 1*4+2*5
np.dot(f, g)

Izlaz:

14

Množenje matrice u Python

Funkcija Numpy matmul() koristi se za vraćanje matričnog umnoška 2 polja. Evo kako to radi

1) 2-D nizovi, vraća normalan proizvod

2) Dimenzije > 2, proizvod se tretira kao hrpa matrice

3) 1-D niz se prvo promiče u matricu, a zatim se izračunava umnožak

Sintaksa:

numpy.matmul(x, y, out=None)

Ovdje,

x, y: Ulazni nizovi. skalari nisu dopušteni

van: Ovo je izborni parametar. Obično se izlaz pohranjuje u ndarray

Primjer:

Na isti način možete izračunati množenje matrica s np.matmul

### Matmul: matruc product of two arrays
h = [[1,2],[3,4]] 
i = [[5,6],[7,8]] 
### 1*5+2*7 = 19
np.matmul(h, i)

Izlaz:

array([[19, 22],       
            [43, 50]])

determinanta

Na kraju, ali ne manje važno, ako trebate izračunati determinantu, možete koristiti np.linalg.det(). Imajte na umu da numpy vodi računa o dimenziji.

Primjer:

## Determinant 2*2 matrix
### 5*8-7*6np.linalg.det(i)

Izlaz:

-2.000000000000005

rezime

  • Python je biblioteka otvorenog koda dostupna u Python, koji pomaže u matematici, znanosti, inženjerstvu i programiranje znanosti o podacima.
  • numpy.zeros() ili np.nule Python funkcija se koristi za stvaranje matrice pune nula.
  • numpy.ones() u Python može se koristiti kada inicijalizirate težine tijekom prve iteracije u TensorFlowu i drugim statističkim zadacima.
  • Python NumPy Reshape funkcija koristi se za oblikovanje niza bez mijenjanja njegovih podataka.
  • Python Funkcija NumPy Flatten koristi se za vraćanje kopije niza u jednoj dimenziji.
  • Numpy.hstack je funkcija u Python koji se koristi za vodoravno slaganje nizova ulaznih nizova kako bi se napravio jedan niz.
  • Numpy.vstack je funkcija u Python koji se koristi za okomito slaganje nizova ulaznih nizova kako bi se napravio jedan niz.
  • numpy.arange() je ugrađena numpy funkcija koja vraća objekt ndarray koji sadrži ravnomjerno raspoređene vrijednosti unutar definiranog intervala.
  • Numpy.dot proizvod moćna je biblioteka za matrično izračunavanje.
  • Funkcija Numpy matmul() koristi se za vraćanje matričnog umnoška 2 polja.