我试图了解从 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 列。但事实并非如此。 img.ndim
返回 3 ,这意味着只有 3 个维度。那么为什么不是返回的元组 (3, 768, 1024)?
答案 0 :(得分:0)
所以这应该意味着有 768 个维度。
不,这意味着第三维有 768 个值。即 768 个形状为 1024x3 的矩阵。元组中的第一个值表示最外层维度,元组中的最后一个值表示最内层维度。
形状(768, 1024, 3)
表示形状1024x3
有768个矩阵,形状(3, 768, 1024)
表示形状768x1024
有3个矩阵
你的例子
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)。