Skip to content

Latest commit

 

History

History
137 lines (82 loc) · 5.13 KB

numpy-handle-dimensions.md

File metadata and controls

137 lines (82 loc) · 5.13 KB

如何处理 NumPy 中的维度

原文:www.kdnuggets.com/2020/07/numpy-handle-dimensions.html

Figure

图片来源:Garik Barseghyan,来自 Pixabay


我们的前三个课程推荐

1. 谷歌网络安全证书 - 快速进入网络安全职业生涯。

2. 谷歌数据分析专业证书 - 提升你的数据分析技能

3. 谷歌 IT 支持专业证书 - 支持你所在组织的 IT


np.newaxis

  • 它用于增加现有数组的维度。它使用切片操作符重新创建数组。

  • 维度在数组中的位置通过 np.newaxis 临时添加。‘None’ 也可以用来代替 np.newaxis。

np.reshape:

  • 它用于将数组重新调整为所需的布局。

np.expand_dims:

  • 它通过在扩展数组形状中的轴位置插入新轴来扩展数组的形状

让我们看看一些主要应用场景,其中上述 NumPy 维度处理操作非常有用:

应用 1Rank 1 数组到行/列向量的转换

在这里,我们创建了一个形状为 (4,) 的 4 元素数组,这称为 Rank 1 数组

Array of 4 elements: [0 1 2 3]
Notice the shape, this is rank 1 array: (4,)
after transpose: (4,)

然而,Rank 1 数组往往会导致模糊的结果,因为它们不一致地表现为行/列向量。如上所示,如果我们对 x1 进行转置,其形状保持不变。

因此,通常建议明确指定数组的维度。这可以通过上述三种技术实现:

  • 使用 np.newaxis:
row vector: [[0 1 2 3]]
(1, 4)

column vector:
 [[0]
 [1]
 [2]
 [3]]
(4, 1)
  • 使用 np.reshape
Row vector using reshape: [[0 1 2 3]]
column vector using reshape:
 [[0]
 [1]
 [2]
 [3]]
  • 使用 np.expand_dims
Row vector using expand_dims: [[0 1 2 3]]
column vector using expand_dims:
 [[0]
 [1]
 [2]
 [3]]

应用 2增加维度

创建另一个形状为 (2,4,28) 的数组 x2,并检查如何将 x2 的维度从 3D 扩展到 5D

Image for post

从上述内容中需要注意的关键点是 np.reshape 也允许你拆分维度。

应用 3:广播

根据 NumPy 文档

broadcasting 描述了 numpy 在算术操作中如何处理不同形状的数组。

例如,当我们将以下两个数组相加时,由于形状不匹配,会显示 'ValueError':

Image for post

让我们看看 np.newaxis 如何增加下面一个数组的维度:

Image for post

由于我们主要需要调整数组的维度以进行正确的广播操作,np.reshapenp.expand_dims 增加维度的方式效果相同(如前面的例子所示)。

感谢阅读 !!!

带有完整代码的 Jupyter notebook 放置在 这里

参考资料:

Vidhi Chugh 是一位获奖的 AI/ML 创新领袖和 AI 伦理学家。她在数据科学、产品和研究的交汇处工作,以提供商业价值和洞察力。她倡导以数据为中心的科学,并在数据治理领域拥有领先的专业知识,致力于构建可信赖的 AI 解决方案。

原文。已获许可重新发布。

更多相关内容