Numpy 尺寸和通道之间的差异

Numpy 尺寸和通道之间的差异,numpy,deep-learning,conv-neural-network,Numpy,Deep Learning,Conv Neural Network,我将图像存储为numpy数组: image = np.array([ [[ 11, 12], [ 13, 14], [ 15, 16]], [[ 21, 22], [ 23, 24], [ 25, 26]], [[ 31, 32], [ 33, 34], [ 35, 36]]]) 我打印形状和尺寸: >>> print('image shape', image.shape,

我将图像存储为numpy数组:

image = np.array([
    [[ 11,  12],
     [ 13,  14],
     [ 15,  16]],
    [[ 21,  22],
     [ 23,  24],
     [ 25,  26]],
    [[ 31,  32],
     [ 33,  34],
     [ 35,  36]]])
我打印形状和尺寸:

>>> print('image shape', image.shape, 'image dimensions', image.ndim)
image shape (3, 3, 2) image dimensions 3
我知道矩阵是3的高度,3的宽度和2的颜色通道(?)


但是。。。。如果矩阵的维数为3。。维度和颜色通道之间有什么区别?

数组的固有属性是
形状
ndim
。形状是每个维度中数组的大小
image.ndim
只是
len(image.shape)
的快捷方式。另一个相关的数量是
image.size
,它是
np.prod(image.shape)
。在numpy中,尺寸称为“轴”,并从零开始。因此,数组中的第一个索引对应于轴0,第二个索引对应于轴1,以此类推

哪个维度是“通道”完全取决于解释。一般来说,这将是最后一个维度,但我也将其视为第一个维度。更一般地说,维度通常对应于数组中的一些有用坐标。请记住,并非所有阵列都是图像。数据可以是完全任意的,并且将基于您的用例

您的示例有些混乱,因为
image.ndim==image.shape[0]==image.shape[1]
。以下是包含多个RGB图像的阵列示例,所有图像大小相同:

images = np.random.randint(255, size=(5, 7, 7, 3), dtype=np.uint8)

我们可以将轴0解释为图像的索引,轴1解释为宽度,轴2解释为高度,轴3解释为颜色通道。在这种情况下,我们有五个7x7大小的图像,每个图像有三个颜色通道。如果通道为R、G、B,则
images[3、0、0、2]
是第四幅图像中左上角像素的蓝色分量。

Dimension是形状中的元素数。(3,)数组的维数为1。(3,3)维度为2;(3,3,3)具有尺寸3等。在特定情况下,您选择将尺寸为3的轴0解释为图像的不同通道。我稍后会发布一个答案。好吧,我直觉上理解这是维度,但在哪种情况下我们使用的是3个以上的维度?我会立即将其添加到我的答案中。现在就开始,全部完成。祝你愉快。谢谢你提供了非常完善的答案,但是。。。出于好奇,如果我说:images=np.random.randint(255,size=(5,7,7,3,2,1))。什么代表轴-2和-1?如果我再加一个轴心呢?@LuisAnaya。我想说的是,Numpy数组用于存储(真实)数据。在现实世界中,您可以按照任何方式构造数组,这是有意义的。人为的例子除了反映现实之外没有什么意义。如果你给我一个更多维度的数组,你必须说那些维度是什么,而不是我:)aaaaa好的,完美的,最后是的,我对这个主题有点困惑,现在我更理解了,非常感谢你的努力