Computer >> Máy Tính >  >> Lập trình >> Python

Vectorization trong Python

Trong bài viết này, chúng ta sẽ tìm hiểu về vectơ hóa và các kỹ thuật khác nhau liên quan đến việc triển khai bằng Python 3.x. Hoặc sớm hơn.

Vectorization là gì?

Vectơ hóa là một kỹ thuật để triển khai mảng mà không cần sử dụng vòng lặp. Thay vào đó, sử dụng một hàm có thể giúp giảm thiểu thời gian chạy và thời gian thực thi mã một cách hiệu quả. Các phép toán khác nhau đang được thực hiện trên vectơ thay vì mảng, chẳng hạn như tích điểm của vectơ, còn được gọi là tích vô hướng vì nó tạo ra một đầu ra duy nhất, sản phẩm bên ngoài tạo ra ma trận vuông có kích thước bằng (độ dài X độ dài) của vectơ, Phần tử phép nhân khôn ngoan mà tích của phần tử có cùng chỉ số và kích thước của ma trận không thay đổi.

Sản phẩm chấm / Sản phẩm bên trong

Vectorization trong Python

Hãy xem việc triển khai

Ví dụ

import time
import numpy
import array
p = array.array('q')
for i in range(100000,200000):
   p.append(i);
q = array.array('q')
for i in range(200000, 300000):
   q.append(i)
# classic dot product
tic = time.process_time()
dot_value = 0.0;
for i in range(len(a)):
   dot_value += p[i] * q[i]
toc = time.process_time()
print("dot_product of vector arrays = "+ str(dot_value));
print("Computation time taken = " + str(1000*(toc - tic )) + "ms")
n_tic = time.process_time()
n_dot_product = numpy.dot(a, b)
n_toc = time.process_time()
print("\nn_dot_product of vector arrays = "+str(n_dot_product))
print("Computation time taken= "+str(1000*(n_toc - n_tic))+"ms")

Đầu ra

dot_product of vector arrays = 3833313333350000.0
Computation time taken = 116.51723400000068ms
n_dot_product of vector arrays = 3833313333350000
Computation time taken= 2.5412239999997865ms

Bây giờ chúng ta hãy thảo luận chi tiết về các hàm được sử dụng abouve

bên ngoài (a, b) - Hàm này nhận hai mảng rỗng làm biến đầu vào và trả về tích ngoài của hai vectơ.

nhân (a, b) - Hàm này nhận hai mảng rỗng làm biến đầu vào và trả về tích ma trận của hai mảng.

dấu chấm (a, b) - Hàm này nhận hai mảng rỗng làm biến đầu vào và trả về tích số chấm của hai mảng.

số không ((n, m)) - Hàm này có hình dạng và kiểu như các biến đầu vào và trả về một ma trận có hình dạng và kiểu đã cho, được bắt đầu bằng số 0.

process_time () - Hàm này trả về giá trị (tính bằng giây) của tổng thời gian CPU của hệ thống và người dùng của tiến trình hiện tại. Nó không bao gồm thời gian trôi qua trong khi ngủ

Kết luận

Trong bài viết này, chúng ta đã tìm hiểu về vectơ hóa trong Python.