Computer >> Máy Tính >  >> Lập trình >> Python

Phép nhân vectơ ma trận với quy ước tổng kết Einstein trong Python

Đối với phép nhân Vectơ ma trận với quy ước tổng kết Einstein, hãy sử dụng phương thức numpy.einsum () trong Python. Tham số đầu tiên là chỉ số con. Nó chỉ định các chỉ số con cho danh sách các nhãn chỉ số con được phân tách bằng danh sách tổng hợp ascomma. Tham số thứ 2 là các toán hạng. Đây là các mảng cho hoạt động.

Phương thức einsum () đánh giá quy ước tổng kết Einstein về các toán hạng. Sử dụng quy ước tính tổng củaEinstein, nhiều phép toán mảng đại số tuyến tính, đa chiều phổ biến có thể được biểu diễn theo cách đơn giản. Trong chế độ ngầm định, einsum tính toán các giá trị này.

Ở chế độ rõ ràng, einsum cung cấp tính linh hoạt hơn nữa để tính toán các phép toán mảng khác mà có thể không được coi là các phép tính tổng của Einstein cổ điển, bằng cách vô hiệu hóa hoặc buộc các nhãn chỉ số con được chỉ định tổng hợp.

Các bước

Đầu tiên, hãy nhập các thư viện được yêu cầu -

import numpy as np

Tạo mảng một chiều hai chiều bằng cách sử dụng phương thức array () -

arr1 = np.arange(25).reshape(5,5)
arr2 = np.arange(5)

Hiển thị các mảng -

print("Array1...\n",arr1)
print("\nArray2...\n",arr2)

Kiểm tra Kích thước của cả hai mảng -

print("\nDimensions of Array1...\n",arr1.ndim)
print("\nDimensions of Array2...\n",arr2.ndim)

Kiểm tra Hình dạng của cả hai mảng -

print("\nShape of Array1...\n",arr1.shape)
print("\nShape of Array2...\n",arr2.shape)

Đối với phép nhân Vectơ ma trận với quy ước tổng kết Einstein, hãy sử dụng phương thức numpy.einsum () trong Python -

print("\nResult (Matrix Vector multiplication)...\n",np.einsum('ij,j', arr1, arr2))

Ví dụ

import numpy as np

# Creating two numpy One-Dimensional array using the array() method
arr1 = np.arange(25).reshape(5,5)
arr2 = np.arange(5)

# Display the arrays
print("Array1...\n",arr1)
print("\nArray2...\n",arr2)

# Check the Dimensions of both the arrays
print("\nDimensions of Array1...\n",arr1.ndim)
print("\nDimensions of Array2...\n",arr2.ndim)

# Check the Shape of both the arrays
print("\nShape of Array1...\n",arr1.shape)
print("\nShape of Array2...\n",arr2.shape)

# For Matrix Vector multiplication with Einstein summation convention, use the numpy.einsum() method in Python.
print("\nResult (Matrix Vector multiplication)...\n",np.einsum('ij,j', arr1, arr2))

Đầu ra

Array1...
[[ 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]]

Array2...
[0 1 2 3 4]

Dimensions of Array1...
2

Dimensions of Array2...
1

Shape of Array1...
(5, 5)

Shape of Array2...
(5,)

Result (Matrix Vector multiplication)...
[ 30 80 130 180 230]