Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Nhân ma trận - vectơ với quy ước Einstein summation trong Python

Subscript 'ij,j' trong numpy.einsum() thực hiện nhân ma trận-vectơ: chỉ số 'j' bị co, 'i' còn lại.

Ví dụ

import numpy as np

arr1 = np.arange(25).reshape(5, 5)  # ma trận 5x5
arr2 = np.arange(5)                 # vectơ 5

print("Ma trận:", arr1)
print("Vectơ:", arr2)
print("Kích thước ma trận:", arr1.shape)
print("Kích thước vectơ:", arr2.shape)

# Nhân ma trận-vectơ: ij,j -> i
result = np.einsum('ij,j', arr1, arr2)
print("Kết quả:", result)

Kết quả

Ma trận: [[ 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]]
Vectơ: [0 1 2 3 4]
Kích thước ma trận: (5, 5)
Kích thước vectơ: (5,)
Kết quả: [ 30  80 130 180 230]

Tương đương arr1 @ arr2 hoặc np.dot(arr1, arr2). Mỗi phần tử kết quả[i] = sum_j arr1[i,j] * arr2[j].