Rate this post

Mô-đun numpy của Python cung cấp một hàm để thực hiện tích vô hướng của hai mảng.

Các bài viết liên quan:

Nếu cả hai mảng ‘a’ và ‘b’ đều là mảng 1 chiều, thì hàm dot () thực hiện tích bên trong của các vectơ (không có liên hợp phức tạp).

Nếu cả hai mảng ‘a’ và ‘b’ đều là mảng 2 chiều, thì hàm dot () thực hiện phép nhân ma trận. Nhưng đối với phép nhân ma trận, việc sử dụng matmul hoặc ‘a’ @ ‘b’ được ưu tiên hơn.

Nếu ‘a’ hoặc ‘b’ là 0 chiều (vô hướng), thì hàm dot () thực hiện phép nhân. Ngoài ra, việc sử dụng phương thức numpy.multiply (a, b) hoặc a * b cũng được ưu tiên hơn.

Nếu ‘a’ là mảng N chiều và ‘b’ là mảng 1 chiều, thì hàm dot () thực hiện tính tổng trên trục cuối cùng của a và b.

Nếu ‘a’ là mảng M chiều và ‘b’ là mảng N chiều (trong đó N> = 2), thì hàm dot () thực hiện tính tổng trên trục cuối cùng của ‘a’ và trục thứ hai -trục cuối cùng của ‘b’:

dot(a, b)[i,j,k,n] = sum(a[i,j,:] * b[k,:,n])  

dot (a, b) [i, j, k, n] = sum (a [i, j ,:] * b [k,:, n])

Cú pháp

numpy.dot(a, b, out=None) 

Tham số của numpy.dot()

  1. a: array_like

Tham số này xác định mảng đầu tiên.

  1. b: array_like

Tham số này xác định mảng thứ hai.

  1. out: ndarray (tùy chọn)

Nó là một đối số đầu ra. Nó phải có loại chính xác sẽ được trả lại trong trường hợp nó không được sử dụng. Đặc biệt, nó phải đáp ứng tính năng hiệu suất, tức là nó phải chứa đúng kiểu, tức là nó phải là chữ C liền kề và kiểu của nó phải là kiểu sẽ được trả về cho dấu chấm (a, b). Do đó, nếu nó không đáp ứng các điều kiện quy định này, nó sẽ tạo ra một ngoại lệ.

Return của numpy.dot()

Hàm này trả về tích số chấm của ‘a’ và ‘b’. Hàm này trả về một đại lượng vô hướng nếu ‘a’ và ‘b’ đều là đại lượng vô hướng hoặc 1 chiều; nếu không, nó trả về một mảng. Nếu ‘out’ được đưa ra, thì nó sẽ được trả về.

  1. Raises

Lỗi ValueError xảy ra khi kích thước cuối cùng của ‘a’ không có cùng kích thước với kích thước từ thứ hai đến cuối cùng của ‘b’.

Ví dụ 1:

import numpy as np  
a=np.dot(6,12)  
a  

Output:

Ví dụ 2:

import numpy as np  
a=np.dot([2j, 3j], [5j, 8j])  
a  

Output:

Ví dụ 3:

import numpy as np  
a = [[1, 2], [4, 1]]  
b = [[4, 11], [2, 3]]  
c=np.dot(a, b)  
c  

Output:

Trong đoạn code trên

  • Chúng ta đã tạo ra hai mảng 2 chiều ‘a’ và ‘b’.
  • Chúng ta đã khai báo biến ‘c’ và gán giá trị trả về của hàm np.dot ().
  • Cuối cùng, chúng tôi đã cố gắng in giá trị của ‘c’.
  • Trong đầu ra, nó hiển thị sản phẩm ma trận dưới dạng một mảng.

Ví dụ 4:

import numpy as np  
x = np.arange(3*4*5*6).reshape((3,4,5,6))  
y = np.arange(3*4*5*6)[::-1].reshape((5,4,6,3))  
p=np.dot(a, b)[2,3,2,1,2,2]  
q=sum(a[2,3,2,:] * b[1,2,:,2])  
p  
q  

Output:

Trong đoạn code trên

  • Chúng tôi đã tạo hai mảng ‘a’ và ‘b’ bằng hàm np.arange () và thay đổi hình dạng của cả hai mảng bằng cách sử dụng hàm reshape ().
  • Chúng tôi đã khai báo biến ‘c’ và gán giá trị trả về của hàm np.dot ()
  • Cuối cùng, chúng tôi đã cố gắng in giá trị ‘c’.
  • Trong đầu ra, nó hiển thị sản phẩm ma trận dưới dạng một mảng.

Ưu điểm và hạn chế của numpy.dot()

Ưu điểm của numpy.dot():

  1. Hiệu suất tính toán: numpy.dot() được tối ưu hóa để thực hiện các phép nhân ma trận và tích vô hướng nhanh chóng. Nó sử dụng các thư viện và cấu trúc dữ liệu tối ưu trong NumPy để cung cấp hiệu suất tính toán cao.
  2. Đa dạng ứng dụng: numpy.dot() hỗ trợ tích vô hướng và phép nhân ma trận cho các mảng đa chiều. Điều này cho phép bạn thực hiện nhiều loại phép tính toán như tích ma trận, phép biến đổi tọa độ, phép hợp nhất dữ liệu và nhiều ứng dụng khác.
  3. Linh hoạt trong xử lý đa chiều: numpy.dot() cho phép xử lý các phép nhân ma trận và tích vô hướng trên các mảng đa chiều với các kích thước và hình dạng khác nhau. Điều này giúp bạn làm việc với các tập dữ liệu phức tạp và phân tích thông tin từ các phép tính toán.

Hạn chế của numpy.dot():

  1. Không kiểm tra kiểu dữ liệu: numpy.dot() không kiểm tra kiểu dữ liệu của mảng đầu vào. Điều này có thể dẫn đến lỗi nếu các mảng không tương thích với phép tính dot. Bạn phải đảm bảo kiểm tra và chuyển đổi kiểu dữ liệu khi cần thiết trước khi sử dụng numpy.dot().
  2. Hạn chế kích thước mảng: numpy.dot() yêu cầu kích thước và hình dạng của hai mảng đầu vào phù hợp để thực hiện phép nhân ma trận hoặc tích vô hướng. Nếu kích thước không khớp, sẽ xảy ra lỗi. Điều này có thể gây khó khăn nếu bạn không chắc chắn về kích thước của mảng hoặc cần thực hiện phép nhân ma trận không tiêu chuẩn.
  3. Chỉ hỗ trợ số học thực: numpy.dot() chỉ hỗ trợ số học thực (float) hoặc phức (complex) làm kiểu dữ liệu của các phần tử trong mảng. Nếu bạn cần thực hiện phép nhân ma trận với kiểu dữ liệu khác, bạn cần sử dụng các phương pháp khác trong NumPy hoặc thư viện tương ứng.

Tổng quan, numpy.dot() là một công cụ mạnh mẽ cho tính toán phép nhân ma trận và tích vô hướng trong NumPy. Tuy nhiên, bạn cần kiểm tra kích thước, kiểu dữ liệu và đảm bảo tương thích giữa các mảng để sử dụng phương thức này một cách đúng đắn.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now