Files
Iris Series: Visualize Math -- From Arithmetic Basics to Machine Learning 79be5dda7d Add files via upload
2025-02-01 17:06:45 +08:00

154 lines
3.5 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"cell_type": "markdown",
"id": "73bd968b-d970-4a05-94ef-4e7abf990827",
"metadata": {},
"source": [
"Chapter 02\n",
"\n",
"# 向量化内积\n",
"Book_4《矩阵力量》 | 鸢尾花书:从加减乘除到机器学习 (第二版)"
]
},
{
"cell_type": "markdown",
"id": "6f5b0126-e220-42a5-9c76-10b5c77dd35c",
"metadata": {},
"source": [
"此代码定义了两个 $2 \\times 2$ 的矩阵 $A$ 和 $B$,并使用 `np.vdot` 计算它们的向量化内积。`np.vdot` 会将矩阵元素展平成一维向量,然后执行逐元素的内积计算。\n",
"\n",
"矩阵 $A$ 和 $B$ 展开后为:\n",
"\n",
"$$\n",
"A = \\begin{bmatrix} 1 & 2 & 3 & 4 \\end{bmatrix}, \\quad B = \\begin{bmatrix} 3 & 4 & 5 & 6 \\end{bmatrix}\n",
"$$\n",
"\n",
"因此,内积的计算为:\n",
"\n",
"$$\n",
"1 \\cdot 3 + 2 \\cdot 4 + 3 \\cdot 5 + 4 \\cdot 6 = 3 + 8 + 15 + 24 = 50\n",
"$$\n",
"\n",
"代码使用 `np.vdot` 执行此向量化的内积计算,而不仅是逐元素矩阵乘法。"
]
},
{
"cell_type": "markdown",
"id": "004f7421-698b-4eb3-9d22-1517683ab9bc",
"metadata": {},
"source": [
"## 导入所需库"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "f0b0c3a1-f413-487e-9f5f-9d8a1a37248f",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np # 导入NumPy库用于数值计算"
]
},
{
"cell_type": "markdown",
"id": "f3ab1198-85f2-47d5-9425-46145141e92e",
"metadata": {},
"source": [
"## 定义两个矩阵"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "138d24b7-39e5-4ccc-9d5c-f554db5c2eb9",
"metadata": {},
"outputs": [],
"source": [
"A = np.array([[1, 2], # 定义矩阵A\n",
" [3, 4]])"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "c79531e6-89d7-4c4c-91ae-afe500cec8bb",
"metadata": {},
"outputs": [],
"source": [
"B = np.array([[3, 4], # 定义矩阵B\n",
" [5, 6]])"
]
},
{
"cell_type": "markdown",
"id": "438b8825-fda5-4905-890a-6f690b7c11dd",
"metadata": {},
"source": [
"## 计算矩阵的向量内积"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "8505b1bc-d105-424b-a163-25205e0f5e94",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"50"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"A_dot_B = np.vdot(A, B) # 使用np.vdot计算A和B的向量内积\n",
"A_dot_B\n",
"# [1,2,3,4]*[3,4,5,6].T # 向量化的点积计算"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "85a80909-2aac-49ed-bb7a-f8cc6b80ee7d",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "ecd322f4-f919-4be2-adc3-69d28ef25e69",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}