ภาพรวม
ใช้ numpy.einsum() สำหรับการคูณเมทริกซ์กับเวกเตอร์ ตาม Einstein summation convention โดยใช้ subscript 'ij,j'
ขั้นตอนการทำงาน
- นำเข้าไลบรารี
import numpy as np - สร้างเมทริกซ์และเวกเตอร์
arr1 = np.arange(25).reshape(5, 5) arr2 = np.arange(5) - ตรวจสอบคุณสมบัติ
print("เมทริกซ์...\n", arr1) print("\nเวกเตอร์...\n", arr2) print("\nมิติเมทริกซ์...\n", arr1.ndim) print("\nมิติเวกเตอร์...\n", arr2.ndim) print("\nรูปร่างเมทริกซ์...\n", arr1.shape) print("\nรูปร่างเวกเตอร์...\n", arr2.shape) - คูณเมทริกซ์กับเวกเตอร์
print("\nผลลัพธ์ (Matrix Vector multiplication)...\n", np.einsum('ij,j', arr1, arr2))
ตัวอย่างโค้ดสมบูรณ์
import numpy as np
arr1 = np.arange(25).reshape(5, 5)
arr2 = np.arange(5)
print("เมทริกซ์...\n", arr1)
print("\nเวกเตอร์...\n", arr2)
print("\nมิติของเมทริกซ์...\n", arr1.ndim)
print("\nมิติของเวกเตอร์...\n", arr2.ndim)
print("\nรูปร่างของเมทริกซ์...\n", arr1.shape)
print("\nรูปร่างของเวกเตอร์...\n", arr2.shape)
print("\nผลลัพธ์ (Matrix Vector multiplication)...\n", np.einsum('ij,j', arr1, arr2))
ผลลัพธ์ที่คาดหวัง
เมทริกซ์...
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]]
เวกเตอร์...
[0 1 2 3 4]
มิติของเมทริกซ์...
2
มิติของเวกเตอร์...
1
รูปร่างของเมทริกซ์...
(5, 5)
รูปร่างของเวกเตอร์...
(5,)
ผลลัพธ์ (Matrix Vector multiplication)...
[ 30 80 130 180 230]