Cách nhân hai ma trận với các kích thước khác nhau trong Python

Một vị trí mà kết quả được lưu trữ. Nếu được cung cấp, nó phải có hình dạng khớp với chữ ký [n,k],[k,m]->[n,m]. Nếu không được cung cấp hoặc Không có, một mảng mới được phân bổ sẽ được trả về

**kwargs

Đối với các đối số chỉ có từ khóa khác, hãy xem tài liệu ufunc .

Mới trong phiên bản 1. 16. Bây giờ xử lý ufunc kwargs

Trả về . y ndarray

Sản phẩm ma trận của các yếu tố đầu vào. Đây chỉ là một đại lượng vô hướng khi cả x1, x2 đều là vectơ 1 chiều

Tăng . Giá trịError

Nếu kích thước cuối cùng của x1 không cùng kích thước với kích thước từ thứ hai đến cuối cùng của x2

Nếu một giá trị vô hướng được truyền vào

Xem thêm

vdot

Sản phẩm chấm liên hợp phức tạp

________số 8

Tính tổng các tích trên các trục tùy ý

einsum

Quy ước tổng kết Einstein

>>> a = np.array[[[1, 0],
..               [0, 1]]]
>>> b = np.array[[[4, 1],
..               [2, 2]]]
>>> np.matmul[a, b]
array[[[4, 1],
       [2, 2]]]
0

sản phẩm ma trận thay thế với các quy tắc phát sóng khác nhau

ghi chú

Hành vi phụ thuộc vào các đối số theo cách sau

  • Nếu cả hai đối số là 2-D, chúng sẽ được nhân giống như ma trận thông thường

  • Nếu một trong hai đối số là N-D, N > 2, thì nó được coi là một chồng ma trận nằm trong hai chỉ mục cuối cùng và phát sóng tương ứng

  • Nếu đối số đầu tiên là 1-D, thì nó được thăng cấp thành ma trận bằng cách thêm 1 vào thứ nguyên của nó. Sau khi nhân ma trận, 1 được thêm vào trước bị xóa

  • Nếu đối số thứ hai là 1-D, thì nó được thăng cấp thành ma trận bằng cách thêm 1 vào thứ nguyên của nó. Sau khi nhân ma trận, 1 được thêm vào sẽ bị xóa

>>> a = np.array[[[1, 0],
..               [0, 1]]]
>>> b = np.array[[[4, 1],
..               [2, 2]]]
>>> np.matmul[a, b]
array[[[4, 1],
       [2, 2]]]
1 khác với
>>> a = np.array[[[1, 0],
..               [0, 1]]]
>>> b = np.array[[[4, 1],
..               [2, 2]]]
>>> np.matmul[a, b]
array[[[4, 1],
       [2, 2]]]
0 ở hai điểm quan trọng

  • Phép nhân với số vô hướng không được phép, thay vào đó hãy sử dụng

    >>> a = np.array[[[1, 0],
    ..               [0, 1]]]
    >>> b = np.array[[[4, 1],
    ..               [2, 2]]]
    >>> np.matmul[a, b]
    array[[[4, 1],
           [2, 2]]]
    
    3

  • Các chồng ma trận được phát cùng nhau như thể các ma trận là các phần tử, tôn trọng chữ ký

    >>> a = np.array[[[1, 0],
    ..               [0, 1]]]
    >>> b = np.array[[[4, 1],
    ..               [2, 2]]]
    >>> np.matmul[a, b]
    array[[[4, 1],
           [2, 2]]]
    
    4

    >>> a = np.ones[[9, 5, 7, 4]]
    >>> c = np.ones[[9, 5, 4, 3]]
    >>> np.dot[a, c].shape
    [9, 5, 7, 9, 5, 3]
    >>> np.matmul[a, c].shape
    [9, 5, 7, 3]
    >>> # n is 7, k is 4, m is 3
    

Hàm matmul triển khai ngữ nghĩa của toán tử

>>> a = np.array[[[1, 0],
..               [0, 1]]]
>>> b = np.array[[[4, 1],
..               [2, 2]]]
>>> np.matmul[a, b]
array[[[4, 1],
       [2, 2]]]
5 được giới thiệu trong Python 3. 5 sau PEP 465

Chủ Đề