ฉันเพิ่งย้ายไป Python 3.5 และสังเกตเห็นผู้ประกอบการคูณเมทริกซ์ใหม่ (@)บางครั้งทำงานแตกต่างกันจากจุด numpyผู้ประกอบการ ตัวอย่างเช่นสำหรับอาร์เรย์ 3 มิติ:
import numpy as np
a = np.random.rand(8,13,13)
b = np.random.rand(8,13,13)
c = a @ b # Python 3.5+
d = np.dot(a, b)
ตัว@
ดำเนินการส่งคืนอาร์เรย์ของรูปร่าง:
c.shape
(8, 13, 13)
ในขณะที่np.dot()
ฟังก์ชันส่งกลับ:
d.shape
(8, 13, 8, 13)
ฉันจะสร้างผลลัพธ์เดียวกันด้วย numpy dot ได้อย่างไร มีความแตกต่างที่สำคัญอื่น ๆ หรือไม่?
matmul
ฟังก์ชันนี้เมื่อหลายปีก่อน @
เนื่องจากตัวดำเนินการ infix เป็นของใหม่ แต่ฟังก์ชันนี้ก็ใช้งานได้ดีเช่นกันถ้าไม่มีมัน