Python`da vektörleştirme

| | | | | | | | | |

Herhangi bir algoritmanın zaman karmaşıklığı, bir uygulamanın güvenilir olup olmadığına karar vermede çok önemlidir. Gerçek zamanlı çıktı uygulamak söz konusu olduğunda, büyük bir algoritmayı olabildiğince hızlı çalıştırmak çok önemlidir. Bunu yapmak için Python, döngüler yazmak zorunda kalmadan tüm veri dizilerinde işlemleri hızlı bir şekilde gerçekleştirmek için birkaç standart matematik işlevine sahiptir. Böyle bir işlevi içeren böyle bir kitaplık numpy `dir. Vektörleştirme durumunda bu standart işlevi nasıl kullanabileceğimize bir bakalım.

Vektörleştirme nedir?
Vektörleştirme, bir döngü kullanmadan Python kodunu hızlandırmak için kullanılır. Böyle bir işlevi kullanmak, kod yürütme sürenizi en aza indirmeye yardımcı olabilir. Tek bir çıktı ürettiği için nokta çarpımı olarak da bilinen vektörlerin nokta çarpımı gibi bir vektör üzerinde çeşitli işlemler gerçekleştirilir; bir kare ölçüm matrisinde. vektörlerin uzunluğunun X uzunluğuna eşittir, bir elemanla çarpma, çarpımı üretir İndekslerin elemanı ve matrisin boyutu değişmeden kalır.

Yapacağız. işlem sürelerini hesaplayarak klasik yöntemlerin sıradan fonksiyonlardan ne kadar uzun sürdüğünü görün.

dış (a, b): İki vektörün dış çarpımını hesaplayın.
çarpma (a, b): İki dizinin matris çarpımı.
nokta (a, b): İki dizinin nokta çarpımı.
sıfır ((n, m)): Verilen şekil ve türde, sıfırlarla dolu bir matris döndür.
process_time (): Geçerli işlemin sistem ve kullanıcı CPU süresinin toplamının değerini (kesirli saniye cinsinden) döndürür. Uyku sırasında geçen süreyi içermez.

Nokta çarpımı:
Nokta çarpımı — eşit uzunluktaki iki vektörün bir sayı üretecek şekilde çarpıldığı cebirsel bir işlemdir. Nokta Ürüne genellikle İç Ürün denir. Bu ürün bir skaler sayı verir. Aynı uzunluktaki a ve b matrislerini ele alalım, ilk matrisin yer değiştirmesi ile nokta çarpım gerçekleştirilir ve ardından çarpma gerçekleştirilir a ' (a devrik a) ve b, ile matematiksel matrisin aşağıdaki resimde gösterildiği gibi.

Görsel temsil nokta ürünün —

Aşağıda Python kodu bulunmaktadır:


# Dot product

içe aktar zaman

içe aktar numpy

import dizi


# 8 bayt int

a = array.array ( `q` )

< kod sınıfı = "anahtar kelime"> için i aralığında ( 100000 ):

a.append (i);


b = dizi. dizi ( ` q` )

için i aralığında ( 100000 , 200000 ):

b.append (i)


# klasik nokta çarpımı uygulama vektörleri

tic = zaman.process_time ()

nokta = 0.0 ;


için i için aralık ( len (a)):

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


toc = zaman.process_time ()


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

print ( "Hesaplama zamanı =" + str ( 1000 * (toc - tik)) + "ms" )


n_tic = zaman .process_time ()

n_dot_product = numpy.dot (a, b)

n_toc = zaman.process_time ()


yazdır ( "n_dot_product =" + str (n_dot_product))

print ( "Hesaplama zamanı =" + str ( 1000 * (n_toc - n_tic)) + "ms" )

Çıkış:

dot_product = 833323333350000.0 Hesaplama süresi = 35.59449199999999ms n_dot_p roduct = 833323333350000 Hesaplama süresi = 0.1559900000000225ms 

Dış mekan çarpımı:
Tensor çarpımı iki koordinat vektörünün olarak adlandırılır Harici çalışma . nx 1 ve mx 1 boyutlarına sahip iki a ve b vektörünü düşünün, ardından vektörün dış çarpımı şuna yol açar: bir dikdörtgen matris nxm . İki vektör aynı boyuta sahipse, elde edilen matris şekilde gösterildiği gibi bir kare matris olacaktır.

Harici ürünün görsel temsili —

Python kodu aşağıdadır:


# Outdoor ürün

import zaman

içe aktar numpy

içe aktar dizi


a = dizi.array ( `i` )

için i içinde aralık ( 200 ):

a.append (i);


b = dizi. dizi ( ` i` )

için i aralığında ( 200 , 400 ):

b.append (i)


# klasik harici ürün vektör uygulamaları

tic = zaman.process_time ()

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


için i aralık ( len ( a)):

için j aralık ( len (b)):

external_product [i] [j] = < kod sınıfı = "düz"> a [i] * b [j]


toc = zaman.process_time ()


yazdır ( "outer_product =" + str < /kod> (dış_ürün));

print ( "Hesaplama zamanı =" + str ( 1000 * (toc - tik)) + "ms" )


n_tic = zaman.process_time ()

external_product = numpy.outer (a, b)

n_toc = zaman.process_time ()

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

print ( "Hesaplama zamanı =" + str ( 1000 * (n_toc - n_tic)) + "ms" )


Çıkış:

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.]] Hesaplama süresi = 39.821617ms external_product = [[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 79202 79401]] Hesaplama süresi = 0,2809480000000031ms 

Eleman bazında çarpım:
İki matrisin eleman bazında çarpımı — bu, birinci matrisin her bir elemanının sonraki matristeki karşılık gelen eleman ile `a` çarpıldığı bir cebirsel işlemdir. Matrislerin boyutları aynı olmalıdır.
İki matrisi a ve b, a — bunlar i ve j, sonra a (i, j) b (i, j) ile çarpılır , sırasıyla aşağıdaki resimde gösterildiği gibi.

Bilge ürünün görsel temsili Öğe —

Python kodu aşağıdadır:


# Element bazında çarpma

import time

import numpy

import dizi

a = array.array ( `i` )

for i in aralık ( 50000 < kod sınıfı = "düz">):

a.append (i);


b = dizi. dizi ( ` i` )

için i aralığında ( 50000 , 100000 ):

b.append (i)


# klasik öğe bazında ürün vektörü uygulamaları

vektör = < kod sınıfı = "düz"> numpy.zeros (( 50000 ))


tic = zaman.process_time ()

için i in aralığı ( len (a)):

vektör [i] = a [i] * < kod sınıfı = "düz"> b [i]

toc = zaman.process_time ()


print ( "Element bilge Ürün = " + str (vektör ));

print ( "Hesaplama zamanı =" + str ( 1000 * (toc - tik)) + "ms" )


n_tic = zaman .process_time ()

vektör = numpy.multiply (a, b)

n_toc = zaman.process_time ()


yazdır ( "Element wise Product =" + str (vektör));

print ( "Hesaplama zamanı =" + str ( 1000 * (n_toc - n_tic)) + "ms" )

Çıkış:

< ön>Öğe bazında Ürün = [0,00000000e + 00 5.00010000e + 04 1.00004000e + 05 ..., 4.99955001e + 09 4.99970000e + 09 4.99985000e + 09] Hesaplama süresi = 23.516678000000013ms Öğe açısından Ürün = [0 50001 100004 . .. , 704582713 704732708 704882705] Hesaplama süresi = 0,2250640000000248ms

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