NumPy 可视化教程
学习 Python, 尤其是机器学习领域, 要非常熟悉最基础的 NumPy 的基本用法.
对初学者 (包括我) 来说, NumPy 有点复杂, 用可视化效果来入门, 理解起来就容易多了.
1. 一维数组
创建数组
1. 给定初始值
\[\mathbf{A = np.array([2, 4, 6, 8])} = \colorbox{lightblue}{$
\begin{array}{c}
2\\
\hline
4\\
\hline
6\\
\hline
8\\
\end{array}
$}
\qquad
\mathbf{B = np.array([1.5, 2.5, 3.5])} = \colorbox{lightgreen}{$
\begin{array}{c}
1.5\\
\hline
2.5\\
\hline
3.5\\
\end{array}
$}
\]
2. ones, zeros, rand (随机值)
\[\mathbf{np.ones(4)} = \colorbox{lightcoral}{$
\begin{array}{c}
1\\
\hline
1\\
\hline
1\\
\hline
1\\
\end{array}
$}
\qquad
\mathbf{np.zeros(3)} = \colorbox{lavender}{$
\begin{array}{c}
0\\
\hline
0\\
\hline
0\\
\end{array}
$}
\qquad
\mathbf{np.random.rand(3)} \approx \colorbox{peachpuff}{$
\begin{array}{c}
0.73\\
\hline
0.29\\
\hline
0.64\\
\end{array}
$}
\]
3. 顺序填充 (arange)
\[\mathbf{np.arange(0, 6, 2)} = \colorbox{lightyellow}{$
\begin{array}{c}
0\\
\hline
2\\
\hline
4\\
\end{array}
$}
\quad \text{(从0到6,步长2)}
\qquad
\mathbf{np.arange(5)} = \colorbox{lightcyan}{$
\begin{array}{c}
0\\
\hline
1\\
\hline
2\\
\hline
3\\
\hline
4\\
\end{array}
$}
\quad \text{(默认从0开始)}
\]
4. 切片填充 (linspace)
\[\mathbf{np.linspace(0, 10, 5)} = \colorbox{palegreen}{$
\begin{array}{c}
0.0\\
\hline
2.5\\
\hline
5.0\\
\hline
7.5\\
\hline
10.0\\
\end{array}
$}
\quad \text{(0到10之间平均取5个数)}
\]
5. 固定值填充 (full)
\[\mathbf{np.full(4, 3.14)} = \colorbox{thistle}{$
\begin{array}{c}
3.14\\
\hline
3.14\\
\hline
3.14\\
\hline
3.14\\
\end{array}
$}
\quad \text{(长度为4,全部填充为3.14)}
\]
属性 (shape, size, ndim)
假设-1
\[\mathbf{A = np.array([1, 2, 3, 4, 5])} = \colorbox{lightblue}{$
\begin{array}{c}
1\\
\hline
2\\
\hline
3\\
\hline
4\\
\hline
5\\
\end{array}
$}
\]
那么-1
\[\mathbf{A.shape = (5,)} \quad \text{(形状:5个元素)} \quad
\mathbf{A.size = 5} \quad \text{(总元素个数)} \quad
\mathbf{A.ndim = 1} \quad \text{(维度:一维)}
\]
索引
假设-2
\[\mathbf{A = np.array([10, 20, 30, 40, 50])} = \colorbox{lightgreen}{$
\begin{array}{ccccc}
10 & 20 & 30 & 40 & 50\\
\hline
0 & 1 & 2 & 3 & 4\\
\end{array}
$}
\]
那么-2
\[\mathbf{A[0]} = 10 \quad
\mathbf{A[2]} = 30 \quad
\mathbf{A[-1]} = 50 \quad \text{(最后一个元素)}
\]
切片
假设-3
\[\mathbf{A = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])}
\]
那么-3
\[\mathbf{A[2:6]} = \colorbox{lightcoral}{$
\begin{array}{c}
2\\
\hline
3\\
\hline
4\\
\hline
5\\
\end{array}
$}
\quad \text{(取索引2到5,不包括6)}
\]
\[\mathbf{A[::2]} = \colorbox{lavender}{$
\begin{array}{c}
0\\
\hline
2\\
\hline
4\\
\hline
6\\
\hline
8\\
\end{array}
$}
\quad \text{(从开始到结束,步长为2)}
\]
\[\mathbf{A[5:]} = \colorbox{peachpuff}{$
\begin{array}{c}
5\\
\hline
6\\
\hline
7\\
\hline
8\\
\hline
9\\
\end{array}
$}
\quad \text{(从索引5到末尾)}
\]
聚合 - max, min, sum
假设-4
\[\mathbf{A = np.array([3, 1, 4, 1, 5, 9])} = \colorbox{lightyellow}{$
\begin{array}{c}
3\\
\hline
1\\
\hline
4\\
\hline
1\\
\hline
5\\
\hline
9\\
\end{array}
$}
\]
那么-4
\[\mathbf{np.max(A)} = 9 \quad
\mathbf{np.min(A)} = 1 \quad
\mathbf{np.sum(A)} = 3+1+4+1+5+9 = \colorbox{lightcyan}{23}
\]
数组乘以数值 (缩放)
假设-5
\[\mathbf{A = np.array([1, 2, 3])} = \colorbox{palegreen}{$
\begin{array}{c}
1\\
\hline
2\\
\hline
3\\
\end{array}
$}
\]
那么-5
\[\mathbf{A \times 2} =
\colorbox{lightblue}{$
\begin{array}{c}
1\\
\hline
2\\
\hline
3\\
\end{array}
$}
\times 2 =
\colorbox{thistle}{$
\begin{array}{c}
1\times2\\
\hline
2\times2\\
\hline
3\times2\\
\end{array}
$}
= \colorbox{lightcoral}{$
\begin{array}{c}
2\\
\hline
4\\
\hline
6\\
\end{array}
$}
\]
两个数组的加减乘除
假设-6
\[\mathbf{A = np.array([1, 2, 3])} = \colorbox{lightblue}{$
\begin{array}{c}
1\\
\hline
2\\
\hline
3\\
\end{array}
$}
\qquad
\mathbf{B = np.array([4, 5, 6])} = \colorbox{lightgreen}{$
\begin{array}{c}
4\\
\hline
5\\
\hline
6\\
\end{array}
$}
\]
那么-6
加法:
\[\mathbf{A + B} =
\colorbox{lightblue}{$
\begin{array}{c}
1\\
\hline
2\\
\hline
3\\
\end{array}
$}
+
\colorbox{lightgreen}{$
\begin{array}{c}
4\\
\hline
5\\
\hline
6\\
\end{array}
$}
=
\colorbox{lightyellow}{$
\begin{array}{c}
1+4\\
\hline
2+5\\
\hline
3+6\\
\end{array}
$}
= \colorbox{lightcyan}{$
\begin{array}{c}
5\\
\hline
7\\
\hline
9\\
\end{array}
$}
\]
减法:
\[\mathbf{A - B} =
\colorbox{lightblue}{$
\begin{array}{c}
1\\
\hline
2\\
\hline
3\\
\end{array}
$}
-
\colorbox{lightgreen}{$
\begin{array}{c}
4\\
\hline
5\\
\hline
6\\
\end{array}
$}
=
\colorbox{palegreen}{$
\begin{array}{c}
1-4\\
\hline
2-5\\
\hline
3-6\\
\end{array}
$}
= \colorbox{thistle}{$
\begin{array}{c}
-3\\
\hline
-3\\
\hline
-3\\
\end{array}
$}
\]
乘法:
\[\mathbf{A \times B} =
\colorbox{lightblue}{$
\begin{array}{c}
1\\
\hline
2\\
\hline
3\\
\end{array}
$}
\times
\colorbox{lightgreen}{$
\begin{array}{c}
4\\
\hline
5\\
\hline
6\\
\end{array}
$}
=
\colorbox{peachpuff}{$
\begin{array}{c}
1\times4\\
\hline
2\times5\\
\hline
3\times6\\
\end{array}
$}
= \colorbox{lavender}{$
\begin{array}{c}
4\\
\hline
10\\
\hline
18\\
\end{array}
$}
\]
除法:
\[\mathbf{B / A} =
\colorbox{lightgreen}{$
\begin{array}{c}
4\\
\hline
5\\
\hline
6\\
\end{array}
$}
\div
\colorbox{lightblue}{$
\begin{array}{c}
1\\
\hline
2\\
\hline
3\\
\end{array}
$}
=
\colorbox{lightyellow}{$
\begin{array}{c}
4\div1\\
\hline
5\div2\\
\hline
6\div3\\
\end{array}
$}
= \colorbox{lightcyan}{$
\begin{array}{c}
4.0\\
\hline
2.5\\
\hline
2.0\\
\end{array}
$}
\]
2. 二维数组, 即矩阵
创建二维数组
1. 给定初始值
\[\mathbf{A = np.array([[1, 2, 3], [4, 5, 6]])} = \colorbox{lightblue}{$
\begin{array}{ccc}
1 & 2 & 3\\
\hline
4 & 5 & 6\\
\end{array}
$}
\]
\[\mathbf{B = np.array([[1.1, 2.2], [3.3, 4.4]])} = \colorbox{lightgreen}{$
\begin{array}{cc}
1.1 & 2.2\\
\hline
3.3 & 4.4\\
\end{array}
$}
\]
2. ones, zeros, rand (随机值)
\[\mathbf{np.ones((2, 3))} = \colorbox{lightcoral}{$
\begin{array}{ccc}
1 & 1 & 1\\
\hline
1 & 1 & 1\\
\end{array}
$}
\qquad
\mathbf{np.zeros((3, 2))} = \colorbox{lavender}{$
\begin{array}{cc}
0 & 0\\
\hline
0 & 0\\
\hline
0 & 0\\
\end{array}
$}
\]
\[\mathbf{np.random.rand(2, 2)} \approx \colorbox{peachpuff}{$
\begin{array}{cc}
0.42 & 0.87\\
\hline
0.19 & 0.55\\
\end{array}
$}
\]
3. 顺序填充 (arange) 与 reshape
\[\mathbf{np.arange(6).reshape(2, 3)} = \colorbox{lightyellow}{$
\begin{array}{ccc}
0 & 1 & 2\\
\hline
3 & 4 & 5\\
\end{array}
$}
\]
4. 切片填充 (linspace) 与 reshape
\[\mathbf{np.linspace(0, 8, 6).reshape(2, 3)} = \colorbox{lightcyan}{$
\begin{array}{ccc}
0.0 & 1.6 & 3.2\\
\hline
4.8 & 6.4 & 8.0\\
\end{array}
$}
\]
5. 固定值填充 (full)
\[\mathbf{np.full((2, 3), 7)} = \colorbox{palegreen}{$
\begin{array}{ccc}
7 & 7 & 7\\
\hline
7 & 7 & 7\\
\end{array}
$}
\]
属性 (shape, size, ndim)
假设-7
\[\mathbf{A = np.array([[1, 2, 3], [4, 5, 6]])} = \colorbox{lightblue}{$
\begin{array}{ccc}
1 & 2 & 3\\
\hline
4 & 5 & 6\\
\end{array}
$}
\]
那么-7
\[\mathbf{A.shape = (2, 3)} \quad \text{(2行3列)} \quad
\mathbf{A.size = 6} \quad \text{(总元素个数)} \quad
\mathbf{A.ndim = 2} \quad \text{(维度:二维)}
\]
索引
假设-8
\[\mathbf{A = np.array([[10, 20, 30], [40, 50, 60]])} = \colorbox{lightgreen}{$
\begin{array}{ccc}
10 & 20 & 30\\
\hline
40 & 50 & 60\\
\end{array}
$}
\]
那么-8
\[\mathbf{A[0, 1]} = 20 \quad \text{(第0行第1列)}
\]
\[\mathbf{A[1, -1]} = 60 \quad \text{(第1行最后一列)}
\]
切片
假设-9
\[\mathbf{A = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])} = \colorbox{lightcoral}{$
\begin{array}{cccc}
1 & 2 & 3 & 4\\
\hline
5 & 6 & 7 & 8\\
\hline
9 & 10 & 11 & 12\\
\end{array}
$}
\]
那么-9
取一行:
\[\mathbf{A[1]} = \colorbox{lavender}{$
\begin{array}{cccc}
5 & 6 & 7 & 8\\
\end{array}
$}
\]
取一列:
\[\mathbf{A[:, 2]} = \colorbox{peachpuff}{$
\begin{array}{c}
3\\
\hline
7\\
\hline
11\\
\end{array}
$}
\]
取子矩阵:
\[\mathbf{A[0:2, 1:3]} = \colorbox{lightyellow}{$
\begin{array}{cc}
2 & 3\\
\hline
6 & 7\\
\end{array}
$}
\]
聚合 - max, min, sum
假设-10
\[\mathbf{A = np.array([[1, 2, 3], [4, 5, 6]])} = \colorbox{lightcyan}{$
\begin{array}{ccc}
1 & 2 & 3\\
\hline
4 & 5 & 6\\
\end{array}
$}
\]
那么-10
\[\mathbf{np.max(A)} = 6 \quad
\mathbf{np.min(A)} = 1 \quad
\mathbf{np.sum(A)} = 1+2+3+4+5+6 = \colorbox{palegreen}{21}
\]
按行或列聚合 - max, min, sum
假设-11
\[\mathbf{A = np.array([[3, 7, 2], [8, 4, 6], [1, 9, 5]])} = \colorbox{lightblue}{$
\begin{array}{ccc}
3 & 7 & 2\\
\hline
8 & 4 & 6\\
\hline
1 & 9 & 5\\
\end{array}
$}
\]
那么-11
按行计算 (along rows)
按行计算最大值(找出每行的最大值):
\[\mathbf{np.max(A, axis=1)} =
\text{检查每一行,找出最大值}
\]
第0行: \(\max(3, 7, 2) = 7\)
第1行: \(\max(8, 4, 6) = 8\)
第2行: \(\max(1, 9, 5) = 9\)
\[\colorbox{lightblue}{$
\begin{array}{ccc}
3 & 7 & 2\\
\hline
8 & 4 & 6\\
\hline
1 & 9 & 5\\
\end{array}
$}
\Rightarrow
\colorbox{lightgreen}{$
\begin{array}{c}
\max(3,7,2)\\
\hline
\max(8,4,6)\\
\hline
\max(1,9,5)\\
\end{array}
$}
\Rightarrow
\mathbf{np.max(A, axis=1)}
= \colorbox{lightcoral}{$
\begin{array}{c}
7\\
\hline
8\\
\hline
9\\
\end{array}
$}
\]
按行计算最小值 (min along rows)
使用相同的矩阵:
\[\mathbf{np.min(A, axis=1)} =
\text{检查每一行,找出最小值}
\]
第0行: \(\min(3, 7, 2) = 2\)
第1行: \(\min(8, 4, 6) = 4\)
第2行: \(\min(1, 9, 5) = 1\)
\[\colorbox{lightblue}{$
\begin{array}{ccc}
3 & 7 & 2\\
\hline
8 & 4 & 6\\
\hline
1 & 9 & 5\\
\end{array}
$}
\Rightarrow
\colorbox{lavender}{$
\begin{array}{c}
\min(3,7,2)\\
\hline
\min(8,4,6)\\
\hline
\min(1,9,5)\\
\end{array}
$}
\Rightarrow
\mathbf{np.min(A, axis=1)}
= \colorbox{peachpuff}{$
\begin{array}{c}
2\\
\hline
4\\
\hline
1\\
\end{array}
$}
\]
按列计算 (along columns)
按列计算最大值 (max along columns)
使用相同的矩阵:
\[\mathbf{np.max(A, axis=0)} =
\text{检查每一列,找出最大值}
\]
第0列: \(\max(3, 8, 1) = 8\)
第1列: \(\max(7, 4, 9) = 9\)
第2列: \(\max(2, 6, 5) = 6\)
\[\colorbox{lightblue}{$
\begin{array}{ccc}
3 & 7 & 2\\
\hline
8 & 4 & 6\\
\hline
1 & 9 & 5\\
\end{array}
$}
\Rightarrow
\colorbox{lightyellow}{$
\begin{array}{ccc}
\max(3,8,1) & \max(7,4,9) & \max(2,6,5)\\
\end{array}
$}
\Rightarrow
\mathbf{np.max(A, axis=1)}
= \colorbox{lightcyan}{$
\begin{array}{ccc}
8 & 9 & 6\\
\end{array}
$}
\]
按列计算最小值 (min along columns)
使用相同的矩阵:
\[\mathbf{np.min(A, axis=0)} =
\text{检查每一列,找出最小值}
\]
第0列: \(\min(3, 8, 1) = 1\)
第1列: \(\min(7, 4, 9) = 4\)
第2列: \(\min(2, 6, 5) = 2\)
\[\colorbox{lightblue}{$
\begin{array}{ccc}
3 & 7 & 2\\
\hline
8 & 4 & 6\\
\hline
1 & 9 & 5\\
\end{array}
$}
\Rightarrow
\colorbox{palegreen}{$
\begin{array}{ccc}
\min(3,8,1) & \min(7,4,9) & \min(2,6,5)\\
\end{array}
$}
\Rightarrow
\mathbf{np.min(A, axis=1)}
= \colorbox{thistle}{$
\begin{array}{ccc}
1 & 4 & 2\\
\end{array}
$}
\]
假设-12
\[\mathbf{A = np.array([[1, 2, 3], [4, 5, 6]])} = \colorbox{lightblue}{$
\begin{array}{ccc}
1 & 2 & 3\\
\hline
4 & 5 & 6\\
\end{array}
$}
\]
那么-12
按行求和(每行相加):
\[\mathbf{np.sum(A, axis=1)} =
\colorbox{lightblue}{$
\begin{array}{ccc}
1 & 2 & 3\\
\hline
4 & 5 & 6\\
\end{array}
$}
\Rightarrow
\colorbox{lightgreen}{$
\begin{array}{c}
1+2+3\\
\hline
4+5+6\\
\end{array}
$}
= \colorbox{lightcoral}{$
\begin{array}{c}
6\\
\hline
15\\
\end{array}
$}
\]
按列求和(每列相加):
\[\mathbf{np.sum(A, axis=0)} =
\colorbox{lightblue}{$
\begin{array}{ccc}
1 & 2 & 3\\
\hline
4 & 5 & 6\\
\end{array}
$}
\Rightarrow
\colorbox{lavender}{$
\begin{array}{ccc}
1+4 & 2+5 & 3+6\\
\end{array}
$}
= \colorbox{peachpuff}{$
\begin{array}{ccc}
5 & 7 & 9\\
\end{array}
$}
\]
总结表格
| 操作 |
说明 |
结果 |
np.max(A, axis=1) |
每行的最大值 |
\([7, 8, 9]\) |
np.min(A, axis=1) |
每行的最小值 |
\([2, 4, 1]\) |
np.max(A, axis=0) |
每列的最大值 |
\([8, 9, 6]\) |
np.min(A, axis=0) |
每列的最小值 |
\([1, 4, 2]\) |
记忆技巧:
axis=0 表示跨行操作(沿着行的方向,即垂直方向),所以是按列计算
axis=1 表示跨列操作(沿着列的方向,即水平方向),所以是按行计算
可视化理解:
\[\text{axis=0: 从上到下 ↓ (按列)}\quad
\text{axis=1: 从左到右 → (按行)}
\]
通过上述可视化过程,方便我们更清楚地理解 NumPy 中按行和按列进行聚合操作的区别!
padding 外围填充
假设-13
\[\mathbf{A = np.array([[1, 2], [3, 4]])} = \colorbox{lightyellow}{$
\begin{array}{cc}
1 & 2\\
\hline
3 & 4\\
\end{array}
$}
\]
那么-13
用0在四周填充一圈:
\[\mathbf{np.pad(A, pad_width=1, constant_values=0)} = \colorbox{lightcyan}{$
\begin{array}{cccc}
0 & 0 & 0 & 0\\
\hline
0 & 1 & 2 & 0\\
\hline
0 & 3 & 4 & 0\\
\hline
0 & 0 & 0 & 0\\
\end{array}
$}
\]
乘以数值 (缩放)
假设-14
\[\mathbf{A = np.array([[1, 2], [3, 4]])} = \colorbox{lightblue}{$
\begin{array}{cc}
1 & 2\\
\hline
3 & 4\\
\end{array}
$}
\]
那么-14
\[\mathbf{A \times 3} =
\colorbox{lightblue}{$
\begin{array}{cc}
1 & 2\\
\hline
3 & 4\\
\end{array}
$}
\times 3 =
\colorbox{lightgreen}{$
\begin{array}{cc}
1\times3 & 2\times3\\
\hline
3\times3 & 4\times3\\
\end{array}
$}
= \colorbox{lightcoral}{$
\begin{array}{cc}
3 & 6\\
\hline
9 & 12\\
\end{array}
$}
\]
矩阵的加减乘除
假设-15
\[\mathbf{A = np.array([[1, 2], [3, 4]])} = \colorbox{lightblue}{$
\begin{array}{cc}
1 & 2\\
\hline
3 & 4\\
\end{array}
$}
\qquad
\mathbf{B = np.array([[5, 6], [7, 8]])} = \colorbox{lightgreen}{$
\begin{array}{cc}
5 & 6\\
\hline
7 & 8\\
\end{array}
$}
\]
那么-15
矩阵加法:
\[\mathbf{A + B} =
\colorbox{lightblue}{$
\begin{array}{cc}
1 & 2\\
\hline
3 & 4\\
\end{array}
$}
+
\colorbox{lightgreen}{$
\begin{array}{cc}
5 & 6\\
\hline
7 & 8\\
\end{array}
$}
=
\colorbox{lavender}{$
\begin{array}{cc}
1+5 & 2+6\\
\hline
3+7 & 4+8\\
\end{array}
$}
= \colorbox{peachpuff}{$
\begin{array}{cc}
6 & 8\\
\hline
10 & 12\\
\end{array}
$}
\]
矩阵减法:
\[\mathbf{A - B} =
\colorbox{lightblue}{$
\begin{array}{cc}
1 & 2\\
\hline
3 & 4\\
\end{array}
$}
-
\colorbox{lightgreen}{$
\begin{array}{cc}
5 & 6\\
\hline
7 & 8\\
\end{array}
$}
=
\colorbox{lightyellow}{$
\begin{array}{cc}
1-5 & 2-6\\
\hline
3-7 & 4-8\\
\end{array}
$}
= \colorbox{lightcyan}{$
\begin{array}{cc}
-4 & -4\\
\hline
-4 & -4\\
\end{array}
$}
\]
矩阵乘法(元素对应相乘):
\[\mathbf{A \times B} =
\colorbox{lightblue}{$
\begin{array}{cc}
1 & 2\\
\hline
3 & 4\\
\end{array}
$}
\times
\colorbox{lightgreen}{$
\begin{array}{cc}
5 & 6\\
\hline
7 & 8\\
\end{array}
$}
=
\colorbox{palegreen}{$
\begin{array}{cc}
1\times5 & 2\times6\\
\hline
3\times7 & 4\times8\\
\end{array}
$}
= \colorbox{thistle}{$
\begin{array}{cc}
5 & 12\\
\hline
21 & 32\\
\end{array}
$}
\]
矩阵除法(元素对应相除):
\[\mathbf{B / A} =
\colorbox{lightgreen}{$
\begin{array}{cc}
5 & 6\\
\hline
7 & 8\\
\end{array}
$}
\div
\colorbox{lightblue}{$
\begin{array}{cc}
1 & 2\\
\hline
3 & 4\\
\end{array}
$}
=
\colorbox{lightcoral}{$
\begin{array}{cc}
5\div1 & 6\div2\\
\hline
7\div3 & 8\div4\\
\end{array}
$}
= \colorbox{lavender}{$
\begin{array}{cc}
5.0 & 3.0\\
\hline
2.33 & 2.0\\
\end{array}
$}
\]
矩阵的点积
假设-16
\[\mathbf{A = np.array([[1, 2], [3, 4]])} = \colorbox{lightblue}{$
\begin{array}{cc}
1 & 2\\
\hline
3 & 4\\
\end{array}
$}
\qquad
\mathbf{B = np.array([[5, 6], [7, 8]])} = \colorbox{lightgreen}{$
\begin{array}{cc}
5 & 6\\
\hline
7 & 8\\
\end{array}
$}
\]
那么-16
矩阵点积计算过程:
\[\mathbf{A \cdot B} =
\colorbox{lightblue}{$
\begin{array}{cc}
1 & 2\\
\hline
3 & 4\\
\end{array}
$}
\cdot
\colorbox{lightgreen}{$
\begin{array}{cc}
5 & 6\\
\hline
7 & 8\\
\end{array}
$}
\]
第一步:计算结果的第0行第0列元素
\[(1, 2) \cdot (5, 7) = 1\times5 + 2\times7 = 5 + 14 = 19
\]
第二步:计算结果的第0行第1列元素
\[(1, 2) \cdot (6, 8) = 1\times6 + 2\times8 = 6 + 16 = 22
\]
第三步:计算结果的第1行第0列元素
\[(3, 4) \cdot (5, 7) = 3\times5 + 4\times7 = 15 + 28 = 43
\]
第四步:计算结果的第1行第1列元素
\[(3, 4) \cdot (6, 8) = 3\times6 + 4\times8 = 18 + 32 = 50
\]
最终结果:
\[\mathbf{A \cdot B} = \colorbox{peachpuff}{$
\begin{array}{cc}
19 & 22\\
\hline
43 & 50\\
\end{array}
$}
\]
数学函数
假设-17
\[\mathbf{A = np.array([[0, \pi/2], [\pi, 3\pi/2]])} \approx \colorbox{lightyellow}{$
\begin{array}{cc}
0 & 1.57\\
\hline
3.14 & 4.71\\
\end{array}
$}
\]
那么-17
正弦函数:
\[\mathbf{np.sin(A)} \approx \colorbox{lightcyan}{$
\begin{array}{cc}
0.0 & 1.0\\
\hline
0.0 & -1.0\\
\end{array}
$}
\]
指数函数:
\[\mathbf{np.exp(A)} \approx \colorbox{palegreen}{$
\begin{array}{cc}
1.0 & 4.81\\
\hline
23.14 & 111.32\\
\end{array}
$}
\]
平方根:
\[\mathbf{np.sqrt(np.array([[1, 4], [9, 16]]))} = \colorbox{thistle}{$
\begin{array}{cc}
1 & 2\\
\hline
3 & 4\\
\end{array}
$}
\]
对数函数:
\[\mathbf{np.log(np.array([[1, 2.718], [7.389, 20.086]]))} \approx \colorbox{lightblue}{$
\begin{array}{cc}
0 & 1\\
\hline
2 & 3\\
\end{array}
$}
\]
这就是 NumPy 的基本操作!通过可视化这些数组和矩阵运算,方便我们直观地理解 NumPy 的工作原理。