Năm 2017 sẽ mãi mãi được khắc trong ký ức của chúng ta khi năm Python vượt qua để trở thành ngôn ngữ hàng đầu cho khoa học dữ liệu. Có rất nhiều yếu tố chơi với điều này: cú pháp đơn giản của Python, hệ sinh thái Pydata tuyệt vời và tất nhiên là mua từ BDFL của Python.
PEP 465 đã giới thiệu toán tử Infix
B = np.matrix['6 1; 7 9'] B0 được chỉ định được sử dụng để nhân ma trận. Việc chấp nhận và thực hiện đề xuất này trong Python 3.5 là một tín hiệu cho cộng đồng khoa học rằng Python đang đóng vai trò là một ngôn ngữ tính toán số rất nghiêm túc.
Tôi là một chuyên gia toán học tính toán ở trường đại học nên ma trận rất gần và thân yêu với trái tim tôi. Tiếng hét với Giáo sư Jeff Orchard vì đã thực hiện các thuật toán ma trận trong C ++. Khóa học đại số tuyến tính số của anh ấy là lớp tốt nhất tôi từng tham gia.
Trong bài đăng này, chúng tôi sẽ khám phá nhà điều hành
B = np.matrix['6 1; 7 9'] B0.
In [2]:
A = np.matrix['3 1; 8 2'] A
In [3]:
B = np.matrix['6 1; 7 9'] B
Out[4]:
matrix[[[25, 12], [62, 26]]]
In [5]:
# element at the top left. i.e. [1, 1] aka [0, 0] in python A[0, 0] * B[0, 0] + A[0, 1] * B[1, 0]
In [6]:
# element at the top right. i.e. [1, 2] aka [0, 1] in python A[0, 0] * B[0, 1] + A[0, 1] * B[1, 1]
In [7]:
# element at the bottom left. i.e. [2, 1] aka [1, 0] in python A[1, 0] * B[0, 0] + A[1, 1] * B[1, 0]
In [8]:
# element at the top right. i.e. [2, 2] aka [1, 1] in python A[1, 0] * B[0, 1] + A[1, 1] * B[1, 1]
In [9]:
# let's put it in matrix form result = np.matrix[[[A[0, 0] * B[0, 0] + A[0, 1] * B[1, 0], A[0, 0] * B[0, 1] + A[0, 1] * B[1, 1]], [A[1, 0] * B[0, 0] + A[1, 1] * B[1, 0], A[1, 0] * B[0, 1] + A[1, 1] * B[1, 1]]]] result
Out[9]:
matrix[[[25, 12], [62, 26]]]
Out[10]:
matrix[[[ True, True], [ True, True]], dtype=bool]
Mô hình dữ liệu Python chỉ định rằng toán tử ____10 10 gọi
B = np.matrix['6 1; 7 9'] B3 và
B = np.matrix['6 1; 7 9'] B4.
Chúng ta có thể quá tải
B = np.matrix['6 1; 7 9'] B0 bằng cách xác định hành vi tùy chỉnh cho từng phương pháp đặc biệt ở trên, nhưng điều này sẽ dẫn đến API của chúng ta không bị pythonic.
Để xây dựng các đối tượng pythonic, hãy quan sát cách các đối tượng Python thực sự cư xử.
- Luciano Ramalho, tác giả của Fluent Python