Dấu chấm trong Python NumPy là gì?

Trong bài viết này, chúng ta sẽ tìm hiểu về phương thức numpy dot[] để tìm các tích vô hướng. Nó bao gồm vô hướng. vectơ, mảng và ma trận. Nó cũng liên quan đến phân tích thực tế và các ứng dụng số phức, trực quan hóa đồ thị, v.v. Đóng góp thực sự của chủ đề này là trong các lĩnh vực Khoa học dữ liệu và Trí tuệ nhân tạo.  

Vectơ là gì?

Vectơ là một đại lượng có dạng mũi tên có cả hướng và độ lớn. Điều đó dường như chính xác hơn để nghiên cứu. Bây giờ chúng ta hãy tìm hiểu sâu hơn một chút về khái niệm mũi tên mà chúng ta nói đến ở đây

Định nghĩa chung và đại diện

  1. Kích cỡ. Một giá trị hoặc một số cụ thể mà một vectơ nắm giữ
  2. Phương hướng. Dòng chảy từ điểm này đến điểm khác

Đây là thông tin chi tiết về các thuật ngữ cơ bản mà khi kết hợp sẽ tạo ra Vectơ. Chúng ta sẽ xem hình ảnh dưới đây để biểu diễn đồ họa của các vectơ cùng với một địa điểm

Vectơ trong mặt phẳng 1 chiều

Cách tạo một ma trận từ một vectơ

Hoạt động quan trọng nhất của vectơ là biểu diễn vectơ ở dạng ma trận hoặc mảng. Điều đáng chú ý là i, j và k là các thành phần có hướng của một vectơ theo trục x, y và z tương ứng.  

Vectơ Với Các Thành Phần

Ba vectơ này có thể được chuyển đổi thành ma trận 3 × 3. Việc trình bày ma trận là

[ [1, 2, -3], 
  [2, 3, 4], 
  [4, -1, 1] ]

Theo cách tương tự, việc triển khai ma trận từ một tập hợp vectơ bất kỳ đã cho là có thể. Chúng ta hãy chuyển sang chủ đề chính là lấy một sản phẩm chấm. của hai mảng

Thao tác trên mảng Numpy

Danh sách cho chúng ta thấy các thao tác quan trọng nhất trên vectơ hoặc mảng

  1. chấm sản phẩm. cộng tất cả các tích của các phần tử của hai vectơ. Biểu diễn dưới dạng A. B
  2. sản phẩm chéo. vectơ thứ ba là kết quả của hai vectơ. Biểu diễn dưới dạng AxB

Trong Python, có một thư viện đầy đủ dành riêng cho Đại số tuyến tính và các phép toán của nó – Numpy. Nó là viết tắt của Numerical Python và nó dành cho các phép tính phức tạp, đặc biệt là khi có sự tham gia của mảng n chiều. Nó là một thư viện mã nguồn mở, vì vậy, chúng tôi có thể làm cho nó tốt hơn bằng cách đóng góp vào mã của nó. Nó là một API dễ dàng có sẵn cho ngôn ngữ lập trình Python.  

Triển khai mảng Numpy

Thư viện chủ yếu được sử dụng để phân tích và tính toán toán học phức tạp. Vì vậy, để làm cho nó có thể xảy ra hơn, hãy đảm bảo rằng chúng ta đã nghiên cứu một số điều cơ bản của nó. Loại dữ liệu cốt lõi của mô-đun này là NumPy ndarray. Điều này dự đoán rằng các hoạt động chính liên quan đến tính toán và tổng hợp mảng. Hãy để chúng tôi làm một hướng dẫn nhanh cho nó

Ví dụ 1

import numpy as np

list_1 = [23, 12, 3, 11]
print['Original list: ', list_1]

arr = nparray[list_1]
print['Numpy array: ', arr]

print['Data type of list_1', type[list_1]]
print['Data type of arr', type[arr]]

# Output
# Original list: [23, 12, 3, 11] 
# Numpy array: array[[23, 12, 3, 11]]
# 
# numpy.ndarray

Ví dụ #2

import numpy as np

matrix = np.array[[[2, 4, 5], [-1, -4, 8], [3, -1, 9]]]
print['Our matrix is: ', matrix]

# output:
# Our matrix is: 
# array[[[2, 4, 5], 
#        [-1, -4, 8],            
#        [3, -1, 9]]]
#

Các phép toán trên mảng Numpy

Phần này nói về việc thực hiện các phép toán. Các thao tác này có vẻ rất dễ dàng với các số nguyên đơn lẻ, nhưng đối với mảng, đó là một nhiệm vụ khá phức tạp

  1. Phép cộng
  2. phép trừ
  3. Phép nhân
  4. Chia hai mảng

Mã số

import numpy as np
a = np.array[[[2, 3, 4], [-1, 3, 2], [9, 4, 8]]]
b = np.array[[[4, -1, 2], [34, 9, 1], [2, 0, 9]]]

addition = a + b
subtraction = a - b
multiplication = a * b
division = a / b

print['Addition of arrays  a and b is: ', addition]
print['Subtraction of arrays  a and b is: ', subtraction]
print['Multiplication of arrays  a and b is: ', multiplication]
print['Division of arrays  a and b is: ', division]

đầu ra

Sản phẩm Numpy dot[]

Sản phẩm này là một phép nhân vô hướng của từng phần tử của mảng đã cho. Theo thuật ngữ toán học chung, một tích vô hướng giữa hai vectơ là tích giữa các thành phần vô hướng tương ứng của chúng và cosin của góc giữa chúng. Vì vậy, nếu chúng ta nói a và b là hai vectơ hợp với một góc xác định Θ, thì

a.b = |a|.|b|.cosΘ # general equation of the dot product for two vectors

Nhưng, trong hàm dot[] của mảng Numpy, không có chỗ cho góc Θ. Vì vậy, chúng ta chỉ cần cho hai ma trận hoặc mảng làm tham số. Vì vậy, chúng tôi sẽ thực hiện điều này trong một mã

import numpy as np

var_1, var_2 = 34, 45 # for scalar values
dot_product_1 = np.dot[var_1, var_2]
dot_product_1

# for matrices
a = np.array[[[2, 3, 4], [-1, 3, 2], [9, 4, 8]]]
b = np.array[[[4, -1, 2], [34, 9, 1], [2, 0, 9]]]


dot_product_2 = np.dot[a, b]
dot_product_2

đầu ra

Đầu ra cho các phép tính toán học

giải thích mã

  1. Nhập mô-đun Numpy
  2. Sau đó khai báo 2 biến var_1 và var_2
  3. gọi np. dot[] và nhập tất cả các biến bên trong nó. Lưu trữ tất cả bên trong biến dot_product_1
  4. Sau đó in nó ra màn hình
  5. Đối với mảng nhiều chiều, hãy tạo mảng bằng phương thức array[] của numpy. Sau đó, làm theo quy trình tương tự trên, gọi sản phẩm dot[]. Sau đó in ra màn hình

Một cách tiếp cận chức năng đối với sản phẩm Numpy dot[]

Khi chúng tôi định nghĩa các chức năng trong bất kỳ ngôn ngữ lập trình nào, mã này rất hữu ích vì chúng tôi có thể gọi chúng một cách ngẫu nhiên và về cơ bản bất cứ lúc nào. Như vậy, chúng ta sẽ khai báo một hàm để thực hiện tốt việc tính tích vô hướng

Mã số

import numpy as np

def dot_product[array_1, array_2]:
    prod = np.dot[array_1, array_2]
    return prod


def main[]:
    # declaring two empty arrays
    arr_1 = []
    arr_2 = [] 


    # taking user input for array 1
    n = int[input['Enter the number of elements for array_1: ']]
    for i in range[n]:
        arr_1.append[int[input['Enter number : '].strip[]]]
    
    # taking user input for array 2
    m = int[input['Enter the number of elements for array_2: ']]
    for i in range[m]:
        arr_2.append[int[input['Enter number: '].strip[]]]
        
        
    print['First array', arr_1, '\n']; print['Second array', arr_2, '\n']
    
    print['The dot product of arrays is: ', dot_product[arr_1, arr_2]]
    
main[]        

Giải trình

  1. Trước tiên, chúng tôi nhập mô-đun numpy dưới dạng np
  2. Sau đó, chúng ta khai báo một hàm đơn giản – dot_product[] nhận hai mảng làm tham số. Phần thân của hàm có np chung. phương thức dot[] được gọi bên trong nó để tính toán tích vô hướng và lưu trữ nó bên trong biến prod. Sau đó, hàm trả về giống nhau ở cuối
  3. Sau đó, trong hàm chính, chúng tôi khai báo hai danh sách trống là mảng của chúng tôi
  4. Biến ‘n’ nhận đầu vào là số phần tử của mảng_1
  5. Tương tự đối với biến 'm'
  6. Sau đó, chúng tôi chạy hai vòng lặp for để lấy các phần tử cho mảng
  7. Vòng lặp for lặp trong phạm vi của hai biến n và m. Theo đó, chúng tôi nhập các giá trị bằng chức năng nối thêm
  8. Tương tự cho vòng lặp for thứ hai
  9. Sau đó, chúng tôi hiển thị hai mảng trên màn hình
  10. Sau đó gọi hàm dot_product[] của chúng ta để lấy tích vô hướng và đặt hai mảng đó làm tham số bên trong nó
  11. Sau khi hiển thị giá trị trên màn hình

đầu ra

Đầu ra từ chức năng

Phần kết luận

Vì vậy, theo cách này, chủ đề kết thúc. Chúng tôi đã thấy cách triển khai toán học của vectơ và cách chúng liên quan chặt chẽ với mảng. Sau đó, chúng tôi đã thấy một số phép biến đổi và tính toán toán học phức tạp thông qua cơ sở mã và hình ảnh. Sau đó là những kiến ​​thức cơ bản về mô-đun Numpy cùng với phương thức dot[] cho tích vô hướng

Sản phẩm chấm trong NumPy là gì?

Tích vô hướng của hai mảng. Cụ thể, nếu cả a và b đều là mảng 1-D, thì đó là tích trong của vectơ [không có phép chia phức] . Nếu cả a và b đều là mảng 2 chiều, thì đó là phép nhân ma trận, nhưng sử dụng matmul hoặc a @ b được ưu tiên hơn. Nếu a hoặc b là 0-D [vô hướng], nó tương đương với phép nhân và sử dụng numpy.

Sự khác biệt giữa Matmul và dấu chấm trong NumPy là gì?

matmul khác với dấu chấm ở hai điểm quan trọng. Không được phép nhân với số vô hướng . 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ại sao sản phẩm chấm NumPy lại nhanh như vậy?

Vì np. dot thực thi các phép toán số học thực tế và vòng lặp kèm theo trong mã được biên dịch , nhanh hơn nhiều so với trình thông dịch Python.

Tích vô hướng có giống với phép nhân ma trận không?

Tích vô hướng [còn gọi là tích trong] của hai vectơ và là. Nó cũng giống như tích ma trận khi được hiểu là ma trận hàng, được hiểu là ma trận cột và tích vô hướng của chúng được hiểu là ma trận. Vì vậy, tích vô hướng có thể hiểu là phép nhân ma trận .

Chủ Đề