@=
और @
पायथन 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]]
Numpy में उपयोग
अब तक, नेम्पी ने निम्नलिखित सम्मेलन का इस्तेमाल किया:
@
ऑपरेटर का परिचय मैट्रिक्स कोड को शामिल कोड को पढ़ने में बहुत आसान बनाता है। 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)
स्पष्ट रूप से, अंतिम कार्यान्वयन समीकरण के रूप में पढ़ना और व्याख्या करना बहुत आसान है।