Numpy.shape 元组 - 元素的顺序

时间:2021-06-21 09:57:14

标签: python numpy

我试图了解从 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)?

1 个答案:

答案 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)。

相关问题