首页 > 解决方案 > 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)?

标签: pythonnumpy

解决方案


所以这应该意味着有768个维度。

不,这意味着第三维中有 768 个值。即 768 个形状为 1024x3 的矩阵。元组中的第一个值表示最外层维度,元组中的最后一个值表示最内层维度。

shape(768, 1024, 3)表示有 768 个 shape 矩阵,1024x3shape(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)。


推荐阅读