Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Vectorization ใน Python


ในบทความนี้ เราจะเรียนรู้เกี่ยวกับ vectorization และเทคนิคต่างๆ ที่เกี่ยวข้องกับการใช้งาน Python 3.x หรือก่อนหน้านั้น

เวกเตอร์คืออะไร

Vectorization เป็นเทคนิคในการใช้อาร์เรย์โดยไม่ต้องใช้ลูป การใช้ฟังก์ชันแทนสามารถช่วยลดเวลาทำงานและเวลาดำเนินการของโค้ดได้อย่างมีประสิทธิภาพ มีการดำเนินการหลายอย่างบนเวคเตอร์แทนที่จะเป็นอาร์เรย์ เช่น ดอทผลิตภัณฑ์ของเวกเตอร์ ซึ่งเรียกอีกอย่างว่าผลคูณสเกลาร์เนื่องจากให้ผลลัพธ์เดียว ผลิตภัณฑ์ภายนอกซึ่งส่งผลให้เมทริกซ์กำลังสองของมิติเท่ากับ (ความยาว X ยาว) ของเวกเตอร์ องค์ประกอบ การคูณอย่างชาญฉลาดซึ่งผลิตภัณฑ์องค์ประกอบของดัชนีเดียวกันและมิติของเมทริกซ์ยังคงไม่เปลี่ยนแปลง

ผลิตภัณฑ์จุด / ผลิตภัณฑ์ภายใน

Vectorization ใน Python

มาดูการใช้งานกัน

ตัวอย่าง

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")

ผลลัพธ์

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

ทีนี้มาพูดถึงฟังก์ชั่นที่ใช้ bouve กันแบบละเอียด

ภายนอก(a,b) − ฟังก์ชันนี้รับอาร์เรย์ numpy สองตัวเป็นตัวแปรอินพุตและส่งกลับผลิตภัณฑ์ภายนอกของเวกเตอร์สองตัว

คูณ (a, b) − ฟังก์ชันนี้รับอาร์เรย์ numpy สองตัวเป็นตัวแปรอินพุตและส่งกลับผลิตภัณฑ์เมทริกซ์ของสองอาร์เรย์

จุด (a, b) − ฟังก์ชันนี้รับอาร์เรย์ numpy สองตัวเป็นตัวแปรอินพุตและส่งกลับค่า dot product ของอาร์เรย์สองอาร์เรย์

ศูนย์((n, m)) − ฟังก์ชันนี้ใช้รูปร่างและประเภทเป็นตัวแปรอินพุตและส่งคืนเมทริกซ์ของรูปร่างและประเภทที่กำหนด โดยกำหนดค่าเริ่มต้นด้วยศูนย์

process_time() − ฟังก์ชันนี้จะคืนค่า (เป็นเศษเสี้ยววินาที) ของผลรวมของระบบและเวลา CPU ของผู้ใช้ของกระบวนการปัจจุบัน ไม่รวมเวลาที่ผ่านไประหว่างการนอนหลับ

บทสรุป

ในบทความนี้ เราได้เรียนรู้เกี่ยวกับ vectorization ใน Python