上一篇文章中,我们的所有例子都在一个维度上处理向量。NumPy之美的一个关键部分是它能够将我们目前所看到的所有内容应用到任意数量的维度。
创建矩阵
我们可以传递以下形式的Python列表,让NumPy创建一个矩阵来表示它们:

我们也可以使用上一篇中提到的相同方法 ones(),zeros() 和 random.random() 等,只要我们给它们一个元组来描述我们正在创建的矩阵的维度:

另外,还可以从磁盘读取数组,无论是标准格式还是自定义格式。
矩阵计算
如果两个矩阵的大小相同,我们可以使用算术运算符来进行两个矩阵的计算。NumPy将对两个矩阵的对应位置进行操作处理。

当两个矩阵的大小不同,只有当其中一个矩阵的维度为1时(例如矩阵只有一列或一行),我们才能在不同大小的矩阵上进行这些算术运算,在这种情况下,NumPy将其广播规则用于该操作:

矩阵点积
NumPy为每个矩阵提供了一种 dot() 方法,可用于与其他矩阵进行点积运算:
上图的底部添加了矩阵尺寸,以强调两个矩阵在它们彼此面对的一侧必须具有相同的尺寸。可以将此操作可视化为如下所示:

矩阵索引
当操作矩阵时,索引和切片操作变得更加灵活:

矩阵函数
矩阵中函数的使用与一维数组相同。

另外,不仅可以求解矩阵中的所有值,还可以使用 axis 参数在行或列之间进行计算:

矩阵转置和重塑
当需要采用两个矩阵的点积并需要对齐它们共同维度时,需要旋转矩阵。NumPy数组有一个方便的属性,T 用于获取矩阵的转置:

在更高级的应用中,可能会需要切换某个矩阵的维度。在机器学习应用程序中通常就是这种情况,其中某个模型期望输入的某个形状与您的数据集不同。
NumPy的 reshape() 方法在这些情况下很有用。您只需将矩阵所需的新尺寸传递给它,NumPy可以根据您的矩阵推断出正确的维度:

更多维度
NumPy可以在任何维度上实现上面讲到的知识,其中心数据结构称为 ndarray(N维数组),原因很简单。

在很多情况下,处理新维度只是在NumPy函数的参数中添加逗号:

注意:当打印三维NumPy数组时,文本输出会以不同于此处显示的方式显示数组。NumPy打印 n 维数组的顺序是,最后一个轴最快循环,而第一个轴最慢。这意味着 np.ones((4,3,2)) 将打印为:
array([[[1., 1.],
[1., 1.],
[1., 1.]],
[[1., 1.],
[1., 1.],
[1., 1.]],
[[1., 1.],
[1., 1.],
[1., 1.]],
[[1., 1.],
[1., 1.],
[1., 1.]]])
本文深入探讨了NumPy库在矩阵创建、计算、索引、转置和重塑方面的强大功能,包括点积运算、广播规则及多维数组的处理技巧。

被折叠的 条评论
为什么被折叠?



