Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การคูณเมทริกซ์กับเวกเตอร์ (Matrix-Vector multiplication) ด้วย Einstein summation convention ใน Python


ภาพรวม

ใช้ numpy.einsum() สำหรับการคูณเมทริกซ์กับเวกเตอร์ ตาม Einstein summation convention โดยใช้ subscript 'ij,j'

ขั้นตอนการทำงาน

  1. นำเข้าไลบรารี
    import numpy as np
    
  2. สร้างเมทริกซ์และเวกเตอร์
    arr1 = np.arange(25).reshape(5, 5)
    arr2 = np.arange(5)
    
  3. ตรวจสอบคุณสมบัติ
    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)
    
  4. คูณเมทริกซ์กับเวกเตอร์
    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]