@=
এবং @
পাইথন 3.5 তে নতুন অপারেটরগুলি মেট্রিক্স গুণমান সম্পাদন করছে । এগুলি বোঝানো হয়েছে যে অপারেটরের সাথে এখনও পর্যন্ত বিদ্যমান বিভ্রান্তি স্পষ্ট করে দেওয়া হয়েছে যা *
সেই নির্দিষ্ট লাইব্রেরি / কোডটিতে নিযুক্ত কনভেনশনের উপর ভিত্তি করে উপাদান অনুসারে গুণ বা ম্যাট্রিক্স গুণনের জন্য ব্যবহৃত হয়েছিল। ফলস্বরূপ, ভবিষ্যতে, অপারেটরটি *
কেবলমাত্র উপাদান-ভিত্তিক গুণণের জন্য ব্যবহৃত হয়।
PEP0465-তে ব্যাখ্যা হিসাবে , দুটি অপারেটর চালু করা হয়েছিল:
A @ B
একইভাবে ব্যবহৃত একটি নতুন বাইনারি অপারেটরA * B
A @= B
একই জায়গায় ব্যবহৃত একটি ইন-প্লেস সংস্করণA *= B
ম্যাট্রিক্স গুণন বনাম উপাদান-গুণিত গুণ
দুটি ম্যাট্রিকের জন্য দ্রুত পার্থক্যটি হাইলাইট করতে:
A = [[1, 2], B = [[11, 12],
[3, 4]] [13, 14]]
উপাদান-ভিত্তিক গুণফল ফলবে:
A * B = [[1 * 11, 2 * 12],
[3 * 13, 4 * 14]]
ম্যাট্রিক্সের গুণটি ফল দেবে:
A @ B = [[1 * 11 + 2 * 13, 1 * 12 + 2 * 14],
[3 * 11 + 4 * 13, 3 * 12 + 4 * 14]]
নম্পি ব্যবহার
এখনও অবধি, নম্পি নিম্নলিখিত সম্মেলনটি ব্যবহার করেছেন:
@
অপারেটরের পরিচিতি ম্যাট্রিক্সের গুণগুলি পড়ার পক্ষে কোডকে আরও সহজ করে তোলে। PEP0465 আমাদের একটি উদাহরণ দেয়:
# Current implementation of matrix multiplications using dot function
S = np.dot((np.dot(H, beta) - r).T,
np.dot(inv(np.dot(np.dot(H, V), H.T)), np.dot(H, beta) - r))
# Current implementation of matrix multiplications using dot method
S = (H.dot(beta) - r).T.dot(inv(H.dot(V).dot(H.T))).dot(H.dot(beta) - r)
# Using the @ operator instead
S = (H @ beta - r).T @ inv(H @ V @ H.T) @ (H @ beta - r)
স্পষ্টতই, শেষের প্রয়োগটি সমীকরণ হিসাবে পড়া এবং ব্যাখ্যা করা অনেক সহজ।