python - Numpy.shape 元组 - 元素的顺序
问题描述
我试图了解从 numpy.shape 返回的元组的结构。我的理解是,对于 3 维 ndarray,元组是 ( number of matrices
, number of rows in each
, number of columns
)
对于这样的 3d ndarray
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],
[[ 7, 86, 6, 98],
[ 5, 1, 0, 4]],
[[ 5, 36, 32, 48],
[97, 0, 27, 18]]])
这确实是它的工作原理。形状是 (3, 2, 4) 即。三个维度,每个维度有 2 行 4 列。
问题是,我有一个来自scipy.misc.face()
(浣熊图像)的 ndarray,当我检查 img.shape 它返回时(768, 1024, 3)
。所以这应该意味着有 768 个维度,每个维度有 1024 行和 3 列。但事实并非如此。返回 3 ,这img.ndim
意味着只有 3 个维度。那么为什么返回的元组不是 (3, 768, 1024)?
解决方案
所以这应该意味着有768个维度。
不,这意味着第三维中有 768 个值。即 768 个形状为 1024x3 的矩阵。元组中的第一个值表示最外层维度,元组中的最后一个值表示最内层维度。
shape(768, 1024, 3)
表示有 768 个 shape 矩阵,1024x3
shape(3, 768, 1024)
表示有 3 个 shape 矩阵768x1024
你的例子,
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],
[[ 7, 86, 6, 98],
[ 5, 1, 0, 4]],
[[ 5, 36, 32, 48],
[97, 0, 27, 18]]])
最外层维度有 3 条记录,第一个内部维度(即行)有 2 条记录,最内层维度(即列)有 4 条记录,因此,形状为 (3,2,4)。
推荐阅读
- javascript - 如何在没有字符串的情况下操作 Javascript 中的 52-32 位?
- c# - Newtonsoft JSON 反序列化适用于本地和实时环境,但不适用于 ASP.NET MVC 应用程序的测试
- node.js - 使用指向其个人资料的链接获取用户的 facebook id
- angular - 如何使用 [(ngModel)] 绑定按钮单击的值
- image - UWP:Gridview 中缓慢的 SVG 图像加载
- javascript - 如何减少 requestAnimationFrame() 方法中的 CPU 使用率
- django - 调度程序会减慢您的 Web 应用程序吗?
- java - 是否有一种轻量级方法可以在 Java 9+ 中添加安全点
- c++ - SHBrowseForFolderA 错误
- python - 为什么`repo init` 会因 GitError 而失败?