Numpy 尺寸和通道之间的差异
我将图像存储为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,
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好的,完美的,最后是的,我对这个主题有点困惑,现在我更理解了,非常感谢你的努力