Numpy花式索引导致不同形状的选择
从以下代码段:Numpy花式索引导致不同形状的选择,numpy,Numpy,从以下代码段: >>> palette = np.array( [ [0,0,0], # black ... [255,0,0], # red ... [0,255,0], # green ... [0,0,255], # blue ...
>>> palette = np.array( [ [0,0,0], # black
... [255,0,0], # red
... [0,255,0], # green
... [0,0,255], # blue
... [255,255,255] ] ) # white
>>> image = np.array( [ [ 0, 1, 2, 0 ], # each value corresponds to a color in the palette
... [ 0, 3, 4, 0 ] ] )
>>> brush = palette[image] # the (2,4,3) color image
array([[[ 0, 0, 0],
[255, 0, 0],
[ 0, 255, 0],
[ 0, 0, 0]],
[[ 0, 0, 0],
[ 0, 0, 255],
[255, 255, 255],
[ 0, 0, 0]]])
变量brush
的形状为(2,4,3)。有人能解释一下为什么将(2,4)形状的过滤器应用于(5,3)形状的数组会产生一个形状(2,4,3)的数组吗?因为你的掩码(在本例中,数组图像
)是一个形状(2,4)
的数组。遮罩拾取的每个元素都是1d数组,包含3个元素。因此,画笔
将具有形状(2,4,3)
这可能有助于您查看数组的形状笔刷:
引自:
通常,结果数组的形状将是串联
索引数组的形状(或所有索引
阵列被广播到具有任何未使用维度形状的
(未编入索引的)正在编入索引的数组中
调色板[图像[0]]
返回通过堆叠调色板的行0、1、2和0获得的二维形状数组(4,3)。类似地,调色板[image[1]]
堆叠调色板的第0、3、4、0行。palete[image]
将两个二维数组palete[image[0]]
和palete[image[1]
堆叠在一起,形成一个形状(2,4,3)的三维数组。它为image
的每个元素选择一行palete
<代码>图像
为(2,4),结果的尾随维度为3。