Vettorizzazione in Python

| | | | | | | | | |

La complessità temporale di qualsiasi algoritmo è molto importante per decidere se un`applicazione è affidabile o meno. L`esecuzione di un algoritmo di grandi dimensioni il più rapidamente possibile è molto importante quando si tratta di applicare l`output in tempo reale. Per fare ciò, Python ha diverse funzioni matematiche standard per eseguire rapidamente operazioni su interi array di dati senza dover scrivere loop. Una di queste librerie che contiene una tale funzione è numpy . Vediamo come possiamo utilizzare questa funzione standard nel caso della vettorizzazione.

Che cos`è la vettorizzazione?
La vettorizzazione viene utilizzata per velocizzare il codice Python senza utilizzare un loop. L`uso di tale funzione può aiutare a ridurre al minimo il tempo di esecuzione del codice. Diverse operazioni vengono eseguite su un vettore, come il prodotto scalare dei vettori, noto anche come prodotto scalare, perché produce un unico output, prodotti esterni che risultano in una matrice di misura quadrata. uguale alla lunghezza X della lunghezza dei vettori, moltiplicazione per un elemento che produce il prodotto L`elemento degli indici e la dimensione della matrice rimangono invariati.

Lo faremo guarda come i metodi classici richiedono più tempo delle normali funzioni, calcolando il loro tempo di elaborazione.

outer (a, b): Calcola il prodotto esterno di due vettori.
moltiplica (a, b): prodotto matrice di due array.
punto (a, b): prodotto scalare di due array.
zeri ((n, m)): Restituisce una matrice di data forma e tipo, riempita con zeri.
process_time (): Restituisce il valore (in frazioni di secondi) della somma del tempo della CPU del sistema e dell`utente del processo corrente. Non include il tempo trascorso durante il sonno.

Prodotto Dot:
Prodotto Dot — è un`operazione algebrica in cui due vettori di uguale lunghezza vengono moltiplicati in modo da produrre un numero. Il prodotto Dot viene spesso definito Prodotto interno . Questo prodotto risulta in un numero scalare. Consideriamo due matrici a e b della stessa lunghezza, il prodotto scalare viene eseguito trasponendo la prima matrice, quindi viene eseguita la moltiplicazione della matrice matematica da a ' (trasporre a) e b, come mostrato nell`immagine sottostante.

Rappresentazione visiva del prodotto punto —

Qui sotto c`è il codice Python:


# Dot product

import time

import numpy

import array


# 8 byte int

a = array.array ( `q` )

< classe codice = "parola chiave"> for i in intervallo ( 100000 ):

a.append (i);


b = array. array ( ` q` )

per i in intervallo ( 100000 , 200000 ):

b.append (i)


# vettori di implementazione del prodotto dot classici

tic = tempo.process_time ()

punto = 0.0 ;


for i in range ( len (a)):

punto + = a [i] * b [i]


toc = ora.process_time ()


print ( "dot_product =" + str (punto));

print ( "Tempo di calcolo =" + str ( 1000 * (toc - tic)) + "ms" )



n_tic = tempo .process_time ()

n_dot_product = numpy.dot (a, b)

n_toc = ora.process_time ()


print ( "n_dot_product =" + str (n_dot_product))

print ( "Tempo di calcolo =" + str ( 1000 * (n_toc - n_tic)) + "ms" )

Esci:

dot_product = 833323333350000.0 Tempo di calcolo = 35.59449199999999ms n_dot_p roduct = 833323333350000 Tempo di calcolo = 0,15599000000000225ms 

Prodotto per esterni:
Il prodotto tensoriale di due vettori di coordinate è chiamato Lavoro esterno . Considera due vettori a e b con dimensioni nx 1 e mx 1 quindi il prodotto esterno del vettore porta a una matrice rettangolare nxm . Se due vettori hanno la stessa dimensione, la matrice risultante sarà una matrice quadrata, come mostrato in figura.

Rappresentazione visiva del prodotto esterno —

Di seguito è riportato il codice Python:


# Prodotto per esterni

import ora

import numpy

import array


a = array.array ( `i` )

for i in range ( 200 ):

a.append (io);


b = array. array ( ` i` )

per i in intervallo ( 200 , 400 ):

b.append (i)


# implementazioni di vettori di prodotti esterni classici

tic = tempo.process_time ()

prodotto_esterno = numpy.zeros (( 200 , 200 ))


for i in range ( len ( a)):

for j in intervallo ( len (b)):

outer_product [i] [j] = a [i] * b [j]


toc = tempo.process_time ()


print ( "outer_product =" + str < /codice> (prodotto_esterno));

print ( "Tempo di calcolo =" + str ( 1000 * (toc - tic)) + "ms" )


n_tic = tempo.process_time ()

outer_product = numpy.outer (a, b)

n_toc = ora.process_time ()

print ( "outer_product =" + str (outer_product)) ;

print ( "Tempo di calcolo =" + str ( 1000 * (n_toc - n_tic)) + "ms" )


Esci:

outer_product = [[0. 0. 0. ... , 0. 0. 0.] [200.201.202. ... , 397. 398. 399.] [400. 402. 404. ... , 794. 796. 798.] ..., [39400. 39597. 39794. ... , 78209. 78406. 78603. ] [39600. 39798. 39996. ... , 78606. 78804. 79002.] [39800. 39999. 40198. ... , 79202. 79401.]] Tempo di calcolo = 39,821617 ms prodotto_esterno = [[0 0 0 ..., 0 0 0] [200 201 202 ..., 397 398 399] [400 402 404 ..., 794 79 6 798] ..., [39400 39597 39794 ..., 78209 78406 78603] [39600 39798 39996 ..., 78606 78804 79002] [39800 39999 40198 ..., 79003 7921] 942 Tempo di calcolo = 0,2809480000000031ms 

Prodotto basato sugli elementi:
Moltiplicazione sugli elementi di due matrici — è un`operazione algebrica in cui ogni elemento della prima matrice viene "moltiplicato per l`elemento corrispondente nella matrice successiva. Le dimensioni delle matrici devono essere le stesse.
Considera due matrici a e b, l`indice dell`elemento in a — questi sono i e j, quindi a (i, j) viene moltiplicato per b (i, j) , rispettivamente, come mostrato nell`immagine sottostante.

Rappresentazione visiva del prodotto saggio Element —

Di seguito è riportato il codice Python:


# Moltiplicazione per elemento

import time

import numpy

import array

a = array.array ( `i` )

for i in intervallo ( 50000 < codice classe = "semplice">):

a.append (i);


b = array. array ( ` i` )

per i in intervallo ( 50000 , 100000 ):

b.append (i)


# implementazioni di vettori di prodotti classici articolo per articolo

vettore = numpy.zeros (( 50000 ))


tic = tempo.process_time ()

per i in intervallo ( len (a)):

vettore [i] = a [i] * b [i]

toc = tempo.process_time ()


print ( "Element wise Product = " + str (vettoriale ));

print ( "Tempo di calcolo =" + str ( 1000 * (toc - tic)) + "ms" )



n_tic = tempo .process_time ()

vettore = numpy.multiply (a, b)

n_toc = ora.process_time ()


print ( "Element wise Product =" + str (vettoriale));

print ( "Tempo di calcolo =" + str ( 1000 * (n_toc - n_tic)) + "ms" )

Esci:

< PRE> ELEMENTO Prodotto saggio = [0.000000E + 00 5.00010000E + 04 1.00004000E + 05 ..., 4.99955001E + 09 4.999970000E + 09 4.999985000E + 09] Tempo di calcolo = 23.516678000000013MS Elemento saggio Prodotto = [0 50001 100004. .. , 704582713 704732708 704882705] Tempo di calcolo = 0,2250640000000248 ms

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method