Hướng dẫn how do you multiply a vector in python? - làm thế nào để bạn nhân một vector trong python?

Xem thảo luận

Cải thiện bài viết

Lưu bài viết

  • Đọc
  • Bàn luận
  • Xem thảo luận

    Cải thiện bài viết

    Lưu bài viết

    Đọc

    • Bàn luận
    • Nhân vector nhân có ba loại:
    • Sản phẩm vô hướng
    • Sản phẩm chấm
      Scalar multiplication can be represented by multiplying a scalar quantity by all the elements in the vector matrix.

      Hướng dẫn how do you multiply a vector in python? - làm thế nào để bạn nhân một vector trong python?

      Sản phẩm chéo

      Nhân hóa vô hướng: Nhân vô hướng có thể được biểu diễn bằng cách nhân một lượng vô hướng với tất cả các phần tử trong ma trận vectơ.

      Mã: Mã Python giải thích phép nhân vô hướng

      4
      0
      4
      1

      4
      0
      4
      3

      4
      0
      4
      5

      [ 12  76 -61]
      8
      [ 12  76 -61]
      9
      >>> a = np.array([[ 5, 1 ,3], 
                        [ 1, 1 ,1], 
                        [ 1, 2 ,1]])
      >>> b = np.array([1, 2, 3])
      >>> print a.dot(b)
      array([16, 6, 8])
      
      0
      >>> a = np.array([[ 5, 1 ,3], 
                        [ 1, 1 ,1], 
                        [ 1, 2 ,1]])
      >>> b = np.array([1, 2, 3])
      >>> print a.dot(b)
      array([16, 6, 8])
      
      1

      >>> a = np.array([[ 5, 1 ,3], 
                        [ 1, 1 ,1], 
                        [ 1, 2 ,1]])
      >>> b = np.array([1, 2, 3])
      >>> print a.dot(b)
      array([16, 6, 8])
      
      2
      4
      7
      >>> a = np.array([[ 5, 1 ,3], 
                        [ 1, 1 ,1], 
                        [ 1, 2 ,1]])
      >>> b = np.array([1, 2, 3])
      >>> print a.dot(b)
      array([16, 6, 8])
      
      4
      >>> a = np.array([[ 5, 1 ,3], 
                        [ 1, 1 ,1], 
                        [ 1, 2 ,1]])
      >>> b = np.array([1, 2, 3])
      >>> print a.dot(b)
      array([16, 6, 8])
      
      5
      >>> a = np.array([[ 5, 1 ,3], 
                        [ 1, 1 ,1], 
                        [ 1, 2 ,1]])
      >>> b = np.array([1, 2, 3])
      >>> print a.dot(b)
      array([16, 6, 8])
      
      6
      >>> a = np.array([[ 5, 1 ,3], 
                        [ 1, 1 ,1], 
                        [ 1, 2 ,1]])
      >>> b = np.array([1, 2, 3])
      >>> print a.dot(b)
      array([16, 6, 8])
      
      5
      >>> a = np.array([[ 5, 1 ,3], 
                        [ 1, 1 ,1], 
                        [ 1, 2 ,1]])
      >>> b = np.array([1, 2, 3])
      >>> print a.dot(b)
      array([16, 6, 8])
      
      8

      >>> a = np.array([[ 5, 1 ,3], 
                        [ 1, 1 ,1], 
                        [ 1, 2 ,1]])
      >>> b = np.array([1, 2, 3])
      >>> print a.dot(b)
      array([16, 6, 8])
      
      9

      >>> print(a @ b)
      array([16, 6, 8])
      
      0
      4
      7
      >>> print(a @ b)
      array([16, 6, 8])
      
      2
      >>> print(a @ b)
      array([16, 6, 8])
      
      3
      4
      7
      >>> print(a @ b)
      array([16, 6, 8])
      
      5
      >>> print(a @ b)
      array([16, 6, 8])
      
      6

      >>> print(a @ b)
      array([16, 6, 8])
      
      7
      >>> print(a @ b)
      array([16, 6, 8])
      
      8
      4
      7
      [ 12  76 -61]
      9
      >>> a = np.array([[ 5, 1 ,3], 
                        [ 1, 1 ,1], 
                        [ 1, 2 ,1]])
      >>> b = np.array([1, 2, 3])
      >>> print a.dot(b)
      array([16, 6, 8])
      
      5
      [ 12  76 -61]
      0
      >>> a = np.array([[ 5, 1 ,3], 
                        [ 1, 1 ,1], 
                        [ 1, 2 ,1]])
      >>> b = np.array([1, 2, 3])
      >>> print a.dot(b)
      array([16, 6, 8])
      
      5
      >>> np.einsum('ji,i->j', a, b)
      array([16, 6, 8])
      
      4

      4
      6
      4
      7
      4
      8
      4
      9
      [ 12  76 -61]
      0
      [ 12  76 -61]
      1
      [ 12  76 -61]
      2

      >>> np.matmul(a, b)
      array([16, 6, 8])
      
      3

      [ 12  76 -61]
      3
      4
      7
      [ 12  76 -61]
      5
      [ 12  76 -61]
      6
      [ 12  76 -61]
      7

      w =  [20  5]

      Hướng dẫn how do you multiply a vector in python? - làm thế nào để bạn nhân một vector trong python?

      >>> np.einsum('ji,i->j', a, b)
      array([16, 6, 8])
      
      5
      [ 12  76 -61]
      6
      >>> np.einsum('ji,i->j', a, b)
      array([16, 6, 8])
      
      7
      [ 12  76 -61]
      6
      >>> np.einsum('ji,i->j', a, b)
      array([16, 6, 8])
      
      9
      4
      7
      >>> np.matmul(a, b)
      array([16, 6, 8])
      
      1
      >>> np.matmul(a, b)
      array([16, 6, 8])
      
      2

      Hướng dẫn how do you multiply a vector in python? - làm thế nào để bạn nhân một vector trong python?

      Đầu ra:

      Nhân hóa vô hướng: Nhân vô hướng có thể được biểu diễn bằng cách nhân một lượng vô hướng với tất cả các phần tử trong ma trận vectơ.

      4
      0
      4
      1

      4
      0
      4
      3

      4
      0
      4
      5

      4
      6
      4
      7
      4
      8
      4
      9
      [ 12  76 -61]
      0
      [ 12  76 -61]
      1
      [ 12  76 -61]
      2

      [ 12  76 -61]
      8
        >>> np.dot(np.dot(a, a.T), a).dot(a.T)
        array([[1406,  382,  446],
               [ 382,  106,  126],
               [ 446,  126,  152]])
        >>> np.linalg.multi_dot((a, a.T, a, a.T))
        array([[1406,  382,  446],
               [ 382,  106,  126],
               [ 446,  126,  152]])
      
      7

      [ 12  76 -61]
      3
      4
      7
      [ 12  76 -61]
      5
      [ 12  76 -61]
      6
      [ 12  76 -61]
      7

      >>> np.einsum('ji,i->j', a, b)
      array([16, 6, 8])
      
      5
      [ 12  76 -61]
      6
      >>> np.einsum('ji,i->j', a, b)
      array([16, 6, 8])
      
      7
      [ 12  76 -61]
      6
      >>> np.einsum('ji,i->j', a, b)
      array([16, 6, 8])
      
      9
      4
      7
      >>> np.matmul(a, b)
      array([16, 6, 8])
      
      1
      >>> np.matmul(a, b)
      array([16, 6, 8])
      
      2

      [ 12  76 -61]
      3
      4
      7
      [ 12  76 -61]
      5
      [ 12  76 -61]
      6
      [ 12  76 -61]
      7

      4

      >>> np.einsum('ji,i->j', a, b)
      array([16, 6, 8])
      
      5
      [ 12  76 -61]
      6
      >>> np.einsum('ji,i->j', a, b)
      array([16, 6, 8])
      
      7
      [ 12  76 -61]
      6
      >>> np.einsum('ji,i->j', a, b)
      array([16, 6, 8])
      
      9
      4
      7
      >>> np.matmul(a, b)
      array([16, 6, 8])
      
      1
      >>> np.matmul(a, b)
      array([16, 6, 8])
      
      2

      Hướng dẫn how do you multiply a vector in python? - làm thế nào để bạn nhân một vector trong python?

      Đầu ra:

      Nhân hóa vô hướng: Nhân vô hướng có thể được biểu diễn bằng cách nhân một lượng vô hướng với tất cả các phần tử trong ma trận vectơ.

      4
      0
      4
      1

      4
      0
      4
      3

      4
      0
      4
      5

      4
      6
      4
      7
      4
      8
      4
      9
      [ 12  76 -61]
      0
      [ 12  76 -61]
      1
      [ 12  76 -61]
      2

      [ 12  76 -61]
      8
      4
      14

      Output:

      [ 12  76 -61]

    Giải pháp đơn giản nhất

    Sử dụng

    4
    15 hoặc
    4
    16. Xem tài liệu ở đây.

    >>> a = np.array([[ 5, 1 ,3], 
                      [ 1, 1 ,1], 
                      [ 1, 2 ,1]])
    >>> b = np.array([1, 2, 3])
    >>> print a.dot(b)
    array([16, 6, 8])
    

    Điều này xảy ra bởi vì các mảng numpy không phải là ma trận và các hoạt động tiêu chuẩn

    4
    17 phần tử công việc khôn ngoan trên các mảng.

    Lưu ý rằng trong khi bạn có thể sử dụng

    4
    18 (tính đến đầu năm 2021) trong đó
    [ 12  76 -61]
    6 sẽ được xử lý như phép nhân ma trận tiêu chuẩn,
    4
    18 không được chấp nhận và có thể bị xóa trong các bản phát hành trong tương lai .. Xem ghi chú trong tài liệu của nó (được sao chép dưới đây):
    4
    18 is deprecated and may be removed in future releases.
    . See the note in its documentation (reproduced below):

    Nó không còn được khuyến nghị sử dụng lớp này, ngay cả đối với đại số tuyến tính. Thay vào đó sử dụng các mảng thông thường. Lớp học có thể được loại bỏ trong tương lai.

    Cảm ơn @hopeking.


    Các giải pháp khác

    Cũng biết có những lựa chọn khác:

    • Như đã lưu ý dưới đây, nếu sử dụng Python3.5+ và Numpy V1.10+, toán tử

      4
      21 hoạt động như bạn mong đợi:

      >>> print(a @ b)
      array([16, 6, 8])
      
    • Nếu bạn muốn Overkill, bạn có thể sử dụng

      4
      22. Tài liệu sẽ cung cấp cho bạn một hương vị cho cách nó hoạt động, nhưng thành thật mà nói, tôi không hoàn toàn hiểu cách sử dụng nó cho đến khi đọc câu trả lời này và chỉ chơi xung quanh với nó.

      >>> np.einsum('ji,i->j', a, b)
      array([16, 6, 8])
      
    • Tính đến giữa năm 2016 (Numpy 1.10.1), bạn có thể thử thử nghiệm

      4
      23, hoạt động như
      4
      15 với hai trường hợp ngoại lệ chính: không nhân hóa vô hướng nhưng nó hoạt động với các ngăn xếp ma trận.

      >>> np.matmul(a, b)
      array([16, 6, 8])
      
    • 4
      25 có chức năng tương tự như
      4
      15 cho phép nhân vectơ ma trận nhưng hoạt động khác nhau đối với ma trận ma trận và phép nhân tenxơ (xem Wikipedia liên quan đến sự khác biệt giữa sản phẩm bên trong và sản phẩm DOT nói chung hoặc xem câu trả lời này về việc triển khai Numpy).for matrix-vector multiplication but behaves differently for matrix-matrix and tensor multiplication (see Wikipedia regarding the differences between the inner product and dot product in general or see this SO answer regarding numpy's implementations).

      >>> np.inner(a, b)
      array([16, 6, 8])
      
      # Beware using for matrix-matrix multiplication though!
      >>> b = a.T
      >>> np.dot(a, b)
      array([[35,  9, 10],
             [ 9,  3,  4],
             [10,  4,  6]])
      >>> np.inner(a, b) 
      array([[29, 12, 19],
             [ 7,  4,  5],
             [ 8,  5,  6]])
      
    • Nếu bạn có nhiều mảng 2D đến

      4
      27 cùng nhau, bạn có thể xem xét hàm
      4
      28, giúp đơn giản hóa cú pháp của nhiều
      4
      29 lồng nhau. Lưu ý rằng điều này chỉ hoạt động với các mảng 2D (nghĩa là không cho phép nhân vector ma trận).2D arrays to
      4
      27 together, you may consider the
      4
      28 function, which simplifies the syntax of many nested
      4
      29s. Note that this only works with 2D arrays (i.e. not for matrix-vector multiplication).

        >>> np.dot(np.dot(a, a.T), a).dot(a.T)
        array([[1406,  382,  446],
               [ 382,  106,  126],
               [ 446,  126,  152]])
        >>> np.linalg.multi_dot((a, a.T, a, a.T))
        array([[1406,  382,  446],
               [ 382,  106,  126],
               [ 446,  126,  152]])
      

    Tùy chọn hiếm hơn cho các trường hợp cạnh

    • Nếu bạn có tenxơ (mảng có kích thước lớn hơn hoặc bằng một), bạn có thể sử dụng

      4
      30 với đối số tùy chọn
      4
      31:

      >>> np.tensordot(a, b, axes=1)
      array([16,  6,  8])
      
    • Không sử dụng

      4
      32 Nếu bạn có một ma trận các số phức, vì ma trận sẽ được làm phẳng thành một mảng 1D, thì nó sẽ cố gắng tìm sản phẩm chấm liên hợp phức tạp giữa ma trận và vector được làm phẳng của bạn (sẽ thất bại do kích thước Không phù hợp
      4
      33 so với
      4
      34).
      if you have a matrix of complex numbers, as the matrix will be flattened to a 1D array, then it will try to find the complex conjugate dot product between your flattened matrix and vector (which will fail due to a size mismatch
      4
      33 vs
      4
      34).

    Làm cách nào để nhân một vector trong numpy?

    Có ba cách chính để thực hiện phép nhân ma trận numpy:..
    DOT (mảng A, mảng B): Trả về sản phẩm vô hướng hoặc dấu chấm của hai mảng ..
    Matmul (Array A, Array B): Trả về sản phẩm ma trận của hai mảng ..
    Nhân (mảng A, mảng B): Trả về phép nhân ma trận phần tử của hai mảng ..

    Làm thế nào để bạn nhân một vector?

    Để nhân một vectơ với vô hướng, nhân mỗi thành phần với vô hướng.Nếu → u = ⟨u1, u2⟩ có cường độ | → u |và hướng d, sau đó n → u = n⟨u1, u2⟩ = ⟨nu1, nu2⟩ trong đó n là một số thực dương, độ lớn là | n → u |, và hướng của nó là d.multiply each component by the scalar. If →u=⟨u1,u2⟩ has a magnitude |→u| and direction d , then n→u=n⟨u1,u2⟩=⟨nu1,nu2⟩ where n is a positive real number, the magnitude is |n→u| , and its direction is d .

    Bạn có thể nhân một mảng python không?

    Nhân () trong Python.hàm numpy.multiply () được sử dụng khi chúng ta muốn tính toán phép nhân của hai mảng.Nó trả về sản phẩm của ARR1 và ARR2, phần tử khôn ngoan.numpy. multiply() function is used when we want to compute the multiplication of two array. It returns the product of arr1 and arr2, element-wise.

    Làm thế nào để bạn vector một sản phẩm trong Python?

    Để tính toán sản phẩm chéo của hai vectơ, hãy sử dụng phương thức numpy.cross () trong python numpy.Phương pháp trả về C, (các) sản phẩm chéo vector.Tham số đầu tiên là A, các thành phần của (các) vectơ đầu tiên.use the numpy. cross() method in Python Numpy. The method returns c, the Vector cross product(s). The 1st parameter is a, the components of the first vector(s).