NumPy-এর einsum() মেথড অপারেন্ডগুলোর ওপর আইনস্টাইন সারমেশন কনভেনশন মূল্যায়ন করে। এই কনভেনশন ব্যবহার করে বহুবimensional, লিনিয়ার बीজগাণিতিক অ্যারে অপারেশনগুলো সহজভাবে রিপ্রেজেন্ট করা যায়। ইমপ্লিসিট মোডে einsum এই মানগুলো কম্পিউট করে। এক্সপ্লিসিট মোডে, নির্দিষ্ট সাবস্ক্রিপ্ট লেবেলগুলোর ওপর সমষ্টি অক্ষম বা বাধ্যতামূলক করে einsum আরও ফ্লেক্সিবিলিটি প্রদান করে যাতে ক্লাসিক্যাল আইনস্টাইন সারমেশন অপারেশন না হলে সেগুলোও কম্পিউট করা যায়।
আইনস্টাইন সারমেশন কনভেনশন ব্যবহার করে ম্যাট্রিক্সের ট্রেস (ট্রেস = ডায়াগোনাল এলিমেন্টগুলোর সমষ্টি) বের করার জন্য পাইথনে numpy.einsum() মেথড ব্যবহার করুন।
- প্রথম প্যারামিটার (subscript): সমষ্টির জন্য সাবস্ক্রিপ্ট নির্দিষ্ট করে কমা-সেপারেটেড সাবস্ক্রিপ্ট লেবেলের তালিকা হিসেবে।
- দ্বিতীয় প্যারামিটার (operands): অপারেশনের জন্য অ্যারেগুলো।
ধাপসমূহ
১. প্রয়োজনীয় লাইব্রেরি ইম্পোর্ট করুন
import numpy as np
২. arange() এবং reshape() ব্যবহার করে NumPy অ্যারে তৈরি করুন
arr = np.arange(16).reshape(4, 4)
৩. অ্যারে প্রদর্শন করুন
print("আমাদের অ্যারে...\n", arr)
৪. ডাইমেনশন চেক করুন
print("\nআমাদের অ্যারের ডাইমেনশন...\n", arr.ndim)
৫. ডাটা টাইপ পান
print("\nআমাদের অ্যারে অবজেক্টের ডাটা টাইপ...\n", arr.dtype)
৬. শেপ পান
print("\nআমাদের অ্যারে অবজেক্টের শেপ...\n", arr.shape)
৭. আইনস্টাইন সারমেশন কনভেনশন ব্যবহার করে ট্রেস বের করুন
print("\nফলাফল (ট্রেস)...\n", np.einsum('ii', arr))
সম্পূর্ণ উদাহরণ
import numpy as np
# arange() এবং reshape() ব্যবহার করে NumPy অ্যারে তৈরি
arr = np.arange(16).reshape(4, 4)
# অ্যারে প্রদর্শন
print("আমাদের অ্যারে...\n", arr)
# ডাইমেনশন চেক
print("\nআমাদের অ্যারের ডাইমেনশন...\n", arr.ndim)
# ডাটা টাইপ
print("\nআমাদের অ্যারে অবজেক্টের ডাটা টাইপ...\n", arr.dtype)
# শেপ
print("\nআমাদের অ্যারে অবজেক্টের শেপ...\n", arr.shape)
# আইনস্টাইন সারমেশন কনভেনশন ব্যবহার করে ট্রেস বের করুন
print("\nফলাফল (ট্রেস)...\n", np.einsum('ii', arr))
আউটপুট
আমাদের অ্যারে...
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
আমাদের অ্যারের ডাইমেনশন...
2
আমাদের অ্যারে অবজেক্টের ডাটা টাইপ...
int64
আমাদের অ্যারে অবজেক্টের শেপ...
(4, 4)
ফলাফল (ট্রেস)...
30
ব্যাখ্যা
সাবস্ক্রিপ্ট 'ii' (আউটপুট লেবেল ছাড়া) বোঝায়: ইনপুটের দুটি অ্যাক্সিস একই লেবেল i দিয়ে চিহ্নিত, এবং আউটপুটে কোনো লেবেল নেই — অর্থাৎ ডায়াগোনাল এলিমেন্টগুলো (i==j) সমষ্টি করে একটি স্ক্যালার মান রিটার্ন করা হয়েছে। এটি np.trace(arr) বা arr.trace() সমতুল্য। ফলাফল: 0+5+10+15 = 30।