@=
และ @
ผู้ประกอบการใหม่ที่นำมาในหลาม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
จนถึงตอนนี้ 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)
เห็นได้ชัดว่าการใช้งานครั้งล่าสุดนั้นง่ายกว่ามากในการอ่านและตีความว่าเป็นสมการ