Bạn có thể nhân hai mảng trong Python không?

Đôi khi, bạn có thể cần lưu cục bộ đối tượng Python của mình để sử dụng sau hoặc Chuyển mạng. Python có các thư viện tuyệt vời để tuần tự hóa như Json và Pickle

Tuần tự hóa đang lưu trữ các cấu trúc dữ liệu trong chương trình để chúng không biến mất sau khi chương trình kết thúc

Ngoài ra còn có thư viện soái ca nhưng nó nguyên thủy hơn và không thể xử lý một số kỹ thuật nhất định như thể hiện lớp và đệ quy. Marshal gần với json hơn trong phạm vi tuần tự hóa của nó

Vì vậy, khi nào bạn sẽ sử dụng dưa chua, cpickle, json hoặc ujson?

cpickle và ujson là các phiên bản nhanh hơn của các thư viện tương ứng tận dụng lợi thế của việc triển khai C trong Python. Vì vậy, chúng sẽ luôn thuận lợi vì lý do tốc độ

Ngoài ra, json là một phiên bản tuần tự hóa an toàn và dễ đọc hơn so với pickle đi kèm với chi phí tốc độ

Mặc dù bạn có thể xử lý hầu hết mọi cấu trúc dữ liệu trong Python bằng Json nhưng nó sẽ không hiệu quả với các tệp lớn hoặc các đối tượng không phổ biến. Mặt khác, Pickle hoạt động ở một điểm tuyệt vời, nơi bạn muốn làm việc với các tệp lớn (nhiều GB) và vẫn không muốn bị làm phiền với các giải pháp cơ sở dữ liệu

Vấn đề là tùy thuộc vào ứng dụng của bạn, bạn có thể phải coi chừng các lỗ hổng bảo mật mà dưa đưa vào hệ thống, vì vậy, thông thường nên tìm kiếm các giải pháp cơ sở dữ liệu hoặc json trước khi sử dụng dưa khi có thể

Đây là câu trả lời của câu hỏi. NumPy cho phép bạn nhân hai mảng mà không cần vòng lặp for. Đây là một ví dụ về _

  • véc tơ hóa
  • quy kết
  • sự tăng tốc
  • lập trình chức năng

Câu hỏi trên có liên quan đến “Trắc nghiệm kỹ năng LinkedIn (Ngôn ngữ lập trình) của LinkedIn“. Bạn có thể tìm thấy tất cả các câu hỏi và câu trả lời được cập nhật liên quan đến “Bài kiểm tra kỹ năng LinkedIn (Ngôn ngữ lập trình) của LinkedIn” trên trang “Bài kiểm tra kỹ năng LinkedIn (Ngôn ngữ lập trình) của LinkedIn”. Nếu bạn tìm thấy bản cập nhật trong câu hỏi hoặc câu trả lời, hãy bình luận trên trang này và cho chúng tôi biết. Chúng tôi sẽ cập nhật đáp án trong thời gian sớm nhất

Trong hướng dẫn này, tôi sẽ giải thích cách sử dụng hàm nhân Numpy – AKA np. nhân – để nhân các ma trận với nhau

Tôi sẽ giải thích cú pháp của np. nhân lên, cách thức hoạt động của hàm và cách sử dụng nó

Nếu bạn cần một cái gì đó cụ thể, bạn có thể nhấp vào bất kỳ liên kết nào sau đây

Mục lục

Vâng. Chúng ta hãy đi đến đó

Giới thiệu nhanh về Numpy Multiply

Như bạn có thể đoán, hàm nhân Numpy nhân các ma trận với nhau

Bạn có thể sử dụng np. nhân để nhân hai mảng có cùng kích thước với nhau. Cái này tính toán một thứ gọi là sản phẩm Hadamard. Trong tích Hadamard, hai đầu vào có hình dạng giống nhau và đầu ra chứa tích từng phần tử của mỗi giá trị đầu vào

An example showing how np.multiply computes the element-wise product of the inputs.

Bạn cũng có thể sử dụng np. nhân để nhân một ma trận với một vectơ. Nếu bạn nhân một ma trận với một vectơ (e. g. , mảng nhiều chiều bằng mảng ít chiều hơn), Numpy sẽ thực hiện quảng bá

Cả hai kỹ thuật đều khá đơn giản và tôi sẽ chỉ cho bạn các ví dụ về cả hai

Nhưng trước tiên, hãy xem cú pháp

Cú pháp của np. nhân

Cú pháp của hàm nhân Numpy rất đơn giản

An image that explains the syntax of the Numpy multiply function.

Hãy nhớ rằng cú pháp này giả định rằng bạn đã nhập Numpy bằng mã

# CREATE 1D 'VECTOR'
vector_1d = np.array([10,20,30])

# CREATE 2D MATRIX OF NUMBERS, 1 TO 9
numbers_1_to_9 = np.arange(start = 1, stop = 10)
matrix_2d_ordered = numbers_1_to_9.reshape((3,3))

# CREATE 2D MATRIX OF NUMBERS, 1 TO 9, RANDOMIZED
np.random.seed(22)
matrix_2d_random = np.random.choice(size = (3,3), a = numbers_1_to_9, replace = False)
0

Định dạng của các mảng đầu vào

Lưu ý rằng có hai đối số đầu vào cho hàm mà tôi đã đặt tên là

# CREATE 1D 'VECTOR'
vector_1d = np.array([10,20,30])

# CREATE 2D MATRIX OF NUMBERS, 1 TO 9
numbers_1_to_9 = np.arange(start = 1, stop = 10)
matrix_2d_ordered = numbers_1_to_9.reshape((3,3))

# CREATE 2D MATRIX OF NUMBERS, 1 TO 9, RANDOMIZED
np.random.seed(22)
matrix_2d_random = np.random.choice(size = (3,3), a = numbers_1_to_9, replace = False)
1 và
# CREATE 1D 'VECTOR'
vector_1d = np.array([10,20,30])

# CREATE 2D MATRIX OF NUMBERS, 1 TO 9
numbers_1_to_9 = np.arange(start = 1, stop = 10)
matrix_2d_ordered = numbers_1_to_9.reshape((3,3))

# CREATE 2D MATRIX OF NUMBERS, 1 TO 9, RANDOMIZED
np.random.seed(22)
matrix_2d_random = np.random.choice(size = (3,3), a = numbers_1_to_9, replace = False)
1. Đây phải là các mảng Numpy hoặc các đối tượng giống như mảng, chẳng hạn như danh sách Python

Ngoài ra, có một số hạn chế về hình dạng của mảng đầu vào

Một cách để sử dụng np. nhân lên, là để hai mảng đầu vào có hình dạng giống hệt nhau (i. e. , chúng có cùng số hàng và số cột). Nếu các mảng đầu vào có cùng hình dạng, thì hàm nhân Numpy sẽ nhân các giá trị của đầu vào theo cặp

An example of how Numpy multiply performs pairwise multiplication of two matrices (i.e., the Hadamard product).

Ngoài ra, nếu hai mảng đầu vào không có cùng kích thước, thì một trong các mảng phải có hình dạng có thể được truyền qua mảng kia

Truyền phát hơi phức tạp để hiểu nếu bạn là người mới bắt đầu sử dụng Numpy, vì vậy tôi sẽ chỉ cho bạn một ví dụ

thông số bổ sung

Ngoài hai đối số đầu vào, có một vài tham số tùy chọn cho hàm nhân Numpy

  • ngoài
  • ở đâu

Những thứ này hơi hiếm khi được sử dụng, nhưng vì vậy tôi sẽ không giải thích chúng ở đây

Đầu ra của np. nhân

Đầu ra của np. multi là một mảng Numpy mới chứa tích phần tử của các mảng đầu vào

Phải nói rằng, có một trường hợp đặc biệt cho vô hướng. nếu cả hai đầu vào cho np. nhân là các giá trị vô hướng, thì đầu ra sẽ là một giá trị vô hướng

ví dụ. cách tính nhân các mảng Numpy với nhau

Bây giờ, chúng ta hãy xem xét một số ví dụ

ví dụ

mã sơ bộ. Nhập Numpy và tạo mảng

Trước khi chạy bất kỳ ví dụ nào, bạn sẽ cần chạy một số mã sơ bộ

Cụ thể, trước khi bạn chạy bất kỳ ví dụ nào, bạn sẽ cần nhập Numpy và bạn sẽ cần tạo một số mảng Numpy mà chúng ta có thể làm việc với

Nhập Numpy

Đầu tiên, chúng ta cần nhập Numpy trước khi có thể sử dụng bất kỳ chức năng nào của Numpy

Bạn có thể làm điều đó với đoạn mã sau

import numpy as np

Tạo mảng

Tiếp theo, chúng ta cần tạo một số mảng có nhiều mảng mà chúng ta có thể thao tác trên đó

Ở đây, chúng ta sẽ tạo một số đối tượng Numpy

  • một 'vectơ' 1 chiều của các số
  • một 'ma trận' 2 chiều của các số từ 1 đến 9 (có thứ tự)
  • một 'ma trận' 2 chiều gồm các số từ 1 đến 9 (ngẫu nhiên)

Để làm điều này, chúng ta sẽ sử dụng một vài hàm Numpy, như hàm mảng Numpy, hàm sắp xếp Numpy, phương thức định hình lại Numpy và lựa chọn ngẫu nhiên Numpy. (Nếu bạn không chắc chắn về những gì chúng tôi đang làm ở đây, bạn nên đọc các hướng dẫn khác. )

# CREATE 1D 'VECTOR'
vector_1d = np.array([10,20,30])

# CREATE 2D MATRIX OF NUMBERS, 1 TO 9
numbers_1_to_9 = np.arange(start = 1, stop = 10)
matrix_2d_ordered = numbers_1_to_9.reshape((3,3))

# CREATE 2D MATRIX OF NUMBERS, 1 TO 9, RANDOMIZED
np.random.seed(22)
matrix_2d_random = np.random.choice(size = (3,3), a = numbers_1_to_9, replace = False)

Khi bạn đã nhập Numpy và khi bạn đã tạo các mảng, bạn sẽ sẵn sàng chạy các ví dụ

VÍ DỤ 1. Sử dụng nhân Numpy trên hai vô hướng

Đầu tiên, chúng ta sẽ bắt đầu với trường hợp đơn giản nhất

Ở đây, chúng tôi sẽ sử dụng np. nhân để nhân hai giá trị vô hướng

np.multiply(3,4)

NGOÀI

12

Giải trình

Rõ ràng, điều này rất đơn giản và dễ dàng

Ở đây, chúng ta chỉ đơn giản là nhân 3 với 4. Kết quả là 12

VÍ DỤ 2. Nhân một mảng với một vô hướng

Tiếp theo, chúng ta sẽ nhân một mảng Numpy 2 chiều với một vô hướng (i. e. , chúng ta sẽ nhân một ma trận với một đại lượng vô hướng)

np.multiply(matrix_2d_ordered, 2)

NGOÀI

________số 8_______

Giải trình

Vậy chuyện gì đã xảy ra ở đây?

Chúng tôi đã gọi np. nhân với hai đối số. mảng Numpy

# CREATE 1D 'VECTOR'
vector_1d = np.array([10,20,30])

# CREATE 2D MATRIX OF NUMBERS, 1 TO 9
numbers_1_to_9 = np.arange(start = 1, stop = 10)
matrix_2d_ordered = numbers_1_to_9.reshape((3,3))

# CREATE 2D MATRIX OF NUMBERS, 1 TO 9, RANDOMIZED
np.random.seed(22)
matrix_2d_random = np.random.choice(size = (3,3), a = numbers_1_to_9, replace = False)
3 và giá trị vô hướng 2

Đối với đầu ra, np. nhân nhân mỗi giá trị của

# CREATE 1D 'VECTOR'
vector_1d = np.array([10,20,30])

# CREATE 2D MATRIX OF NUMBERS, 1 TO 9
numbers_1_to_9 = np.arange(start = 1, stop = 10)
matrix_2d_ordered = numbers_1_to_9.reshape((3,3))

# CREATE 2D MATRIX OF NUMBERS, 1 TO 9, RANDOMIZED
np.random.seed(22)
matrix_2d_random = np.random.choice(size = (3,3), a = numbers_1_to_9, replace = False)
3 với 2

Nó khá thẳng về phía trước

VÍ DỤ 3. Nhân hai mảng Numpy có cùng kích thước

Bây giờ, hãy nhân hai mảng có cùng kích thước

Ở đây, chúng ta sẽ nhân

# CREATE 1D 'VECTOR'
vector_1d = np.array([10,20,30])

# CREATE 2D MATRIX OF NUMBERS, 1 TO 9
numbers_1_to_9 = np.arange(start = 1, stop = 10)
matrix_2d_ordered = numbers_1_to_9.reshape((3,3))

# CREATE 2D MATRIX OF NUMBERS, 1 TO 9, RANDOMIZED
np.random.seed(22)
matrix_2d_random = np.random.choice(size = (3,3), a = numbers_1_to_9, replace = False)
3 với
# CREATE 1D 'VECTOR'
vector_1d = np.array([10,20,30])

# CREATE 2D MATRIX OF NUMBERS, 1 TO 9
numbers_1_to_9 = np.arange(start = 1, stop = 10)
matrix_2d_ordered = numbers_1_to_9.reshape((3,3))

# CREATE 2D MATRIX OF NUMBERS, 1 TO 9, RANDOMIZED
np.random.seed(22)
matrix_2d_random = np.random.choice(size = (3,3), a = numbers_1_to_9, replace = False)
6

np.multiply(matrix_2d_ordered, matrix_2d_random)

NGOÀI

array([[ 9,  4, 12],
       [12, 35,  6],
       [56, 40, 54]])

Giải trình

Ở đây, np. nhân là nhân các giá trị của từng ma trận đầu vào, theo từng phần tử

And image that shows how np.multiply multiples two same-sized matrixes.

Đầu ra là một ma trận có cùng kích thước với đầu vào, chứa tích phần tử của các giá trị của ma trận đầu vào

(Đây được gọi là sản phẩm Hadamard. )

VÍ DỤ 4. Nhân một ma trận với một vectơ (i. e. , phát thanh truyền hình)

Cuối cùng, hãy làm một ví dụ nữa

Ở đây, chúng ta sẽ nhân một trong các mảng đầu vào 2 chiều với mảng 1 chiều. Thực tế, điều này giống như nhân một ma trận với một vectơ

np.multiply(matrix_2d_ordered, vector_1d)

NGOÀI

array([[ 10,  40,  90],
       [ 40, 100, 180],
       [ 70, 160, 270]])

Giải trình

Trong ví dụ này, chúng tôi đã nhân ma trận 2 chiều với vectơ 1 chiều. (TÔI. e. , chúng tôi đã nhân mảng Numpy 2D với mảng Numpy 1D)

Khi chúng tôi làm điều này, Numpy thực hiện cái được gọi là “phát sóng. ” Thực tế, nó lấy vectơ 1D, coi nó là một hàng dữ liệu và nhân vectơ đó với mỗi hàng trong mảng 2D

Vì vậy, nó nhân hàng 1 của ma trận với vectơ, phần tử khôn ngoan. Sau đó, nó nhân hàng 2 của ma trận với vectơ. Và như thế

An explanation showing how to multiply a matrix by a vector with Numpy multiply.

Hãy nhớ rằng khi bạn làm điều này, vectơ phải có hình dạng sao cho nó có thể được phát trên ma trận

Để lại câu hỏi khác của bạn trong các ý kiến ​​​​dưới đây

Bạn có câu hỏi nào khác về cách nhân mảng Numpy không?

Nếu vậy, hãy để lại câu hỏi của bạn trong phần bình luận bên dưới

Tham gia khóa học của chúng tôi để tìm hiểu thêm về Numpy

Trong hướng dẫn này, tôi đã giải thích cách nhân mảng trong Numpy với np. nhân

Điều này sẽ giúp bạn thực hiện phép nhân mảng, nhưng nếu bạn thực sự muốn học Numpy, thì còn rất nhiều điều cần học

Nếu bạn nghiêm túc về việc thành thạo Numpy và nghiêm túc về khoa học dữ liệu trong Python, bạn nên cân nhắc tham gia khóa học cao cấp của chúng tôi có tên là Numpy Mastery

Numpy Mastery sẽ dạy cho bạn mọi thứ bạn cần biết về Numpy, bao gồm

  • Cách tạo mảng Numpy
  • Cách định hình lại, tách và kết hợp các mảng Numpy của bạn
  • Chức năng “Numpy random seed” làm gì
  • Cách sử dụng các hàm ngẫu nhiên Numpy
  • Cách thực hiện các phép toán trên mảng Numpy
  • và nhiều hơn nữa …

Hơn nữa, khóa học này sẽ cho bạn thấy một hệ thống thực hành giúp bạn thành thạo cú pháp trong vòng vài tuần. Chúng tôi sẽ chỉ cho bạn một hệ thống thực hành cho phép bạn ghi nhớ tất cả cú pháp Numpy mà bạn đã học. Nếu bạn gặp khó khăn trong việc ghi nhớ cú pháp Numpy, đây là khóa học bạn đang tìm kiếm

Bạn có thể nhân các mảng với nhau không?

Phép nhân mảng . Các phương pháp nhân ma trận này bao gồm phép nhân theo phần tử, tích vô hướng và tích chéo. NumPy array can be multiplied by each other using matrix multiplication. These matrix multiplication methods include element-wise multiplication, the dot product, and the cross product.

Làm cách nào để nhân hai mảng NumPy?

Có ba cách chính để thực hiện phép nhân ma trận NumPy. .
dấu chấm (mảng a, mảng b). trả về tích vô hướng hoặc vô hướng của hai mảng
matmul(mảng a, mảng b). trả về tích 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

NumPy có cho phép bạn nhân 2 mảng mà không cần vòng lặp for không?

Trả lời. Câu trả lời. NumPy cho phép bạn nhân hai mảng mà không cần vòng lặp for. đây là một ví dụ về vector hóa .