কম্পিউটার টিউটোরিয়াল

পাইথনে ভেক্টরাইজেশন (Vectorization) – পারফরম্যান্স অপ্টিমাইজেশন

এই লেখায় পাইথন ৩.x বা তার আগের সংস্করণে ভেক্টরাইজেশন এবং এর ইমপ্লিমেন্টেশন টেকনিক আলোচনা করা হলো।

ভেক্টরাইজেশন কী?

ভেক্টরাইজেশন হল লুপ ব্যবহার না করে অ্যারে অপারেশন ইমপ্লিমেন্ট করার একটি টেকনিক। ফাংশন ব্যবহার করে রানিং টাইম এবং এক্সিকিউশন টাইম কমাতে হয়। ভেক্টরের ওপর বিভিন্ন অপারেশন করা যায়: ডট প্রোডাক্ট (স্কেলার প্রোডাক্ট), আউটার প্রোডাক্ট (স্কয়ার ম্যাট্রিক্স), এলিমেন্ট-ওয়াইজ মাল্টিপ্লিকেশন।

ডট প্রোডাক্ট / ইনার প্রোডাক্ট

পাইথনে ভেক্টরাইজেশন (Vectorization) – পারফরম্যান্স অপ্টিমাইজেশন

ইমপ্লিমেন্টেশন উদাহরণ

import time
import numpy as np
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)

# ক্লাসিক ডট প্রোডাক্ট (লুপ)
tic = time.process_time()
dot_value = 0.0
for i in range(len(p)):
    dot_value += p[i] * q[i]
toc = time.process_time()
print(f"Dot product (loop) = {dot_value}")
print(f"Computation time = {1000*(toc - tic):.2f} ms")

# NumPy ডট প্রোডাক্ট (ভেক্টরাইজড)
n_tic = time.process_time()
n_dot_product = np.dot(p, q)
n_toc = time.process_time()
print(f"\nDot product (NumPy) = {n_dot_product}")
print(f"Computation time = {1000*(n_toc - n_tic):.2f} ms")

আউটপুট

Dot product (loop) = 3833313333350000.0
Computation time = 116.52 ms
Dot product (NumPy) = 3833313333350000
Computation time = 2.54 ms

দেখা যাচ্ছে NumPy-এর ভেক্টরাইজড অপারেশন লুপের চেয়ে অনেক গুণ দ্রুত।

NumPy-এর গুরুত্বপূর্ণ ফাংশনসমূহ

  • outer(a, b) – দুটি ভেক্টরের আউটার প্রোডাক্ট রিটার্ন করে।
  • multiply(a, b) – দুটি অ্যারোর এলিমেন্ট-ওয়াইজ মাল্টিপ্লিকেশন।
  • dot(a, b) – ডট প্রোডাক্ট রিটার্ন করে।
  • zeros((n, m)) – শূন্য দিয়ে ভরা ম্যাট্রিক্স তৈরি করে।
  • process_time() – বর্তমান প্রসেসের CPU টাইম রিটার্ন করে (স্লিপ টাইম বাদ দিয়ে)।

উপসংহার

ভেক্টরাইজেশন পাইথনে লুপ এড়িয়ে হাই-পারফরম্যান্স নিউমেরিক্যাল কম্পিউটেশন সক্ষম করে। NumPy এই কাজে সবচেয়ে কার্যকর টুল।

  1. পাইথন - পান্ডাস ডেটাফ্রেমকে সময় অনুযায়ী ফিল্টার করুন

  2. পাইথনে ডেট স্ট্রিংকে টাইমস্ট্যাম্পে রূপান্তর করা

  3. পাইথন প্রোগ্রাম: ল্যাপ টাইমার তৈরি করা

  4. পাইথনে টাইম সিরিজ প্লট করা