Numpy数组的降维

3
我正在进行图像数据挖掘。每个像素被视为一个数据点。图像的读取方式如下所示:
im=Image.open('lena.bmp')
im=numpy.array(im)
print im.shape

根据图像是彩色还是灰度,im.shape 可能是 (10,10,3) 或者 (10,10,1)

之后,将图像展平成特征矩阵,方法如下:

如果是 (10,10,3),则变成 --->(100,3)

如果是 (10,10,1),则变成 --->(100,1)

我该如何编写一个多态函数来实现这个功能?我的当前做法是:

obs=reshape(im,(im.shape[0]*im.shape[1],1, im.size/(im.shape[0]*im.shape[1])))

1
你的形状元组里面不是多了一个1吗? - Jaime
这是正确的。我正在进行obs=reshape(im,(im.shape[0]*im.shape[1], im.size/(im.shape[0]*im.shape[1])))操作。 - Dzung Nguyen
1个回答

3

您可以做:

obs = np.reshape(im, (-1, im.shape[-1]))

你能详细解释一下这段代码吗?它运行得非常完美。shape[-1]是维度的数量,那么它前面的-1又是什么意思呢? - Dzung Nguyen
1
@DzungNguyen -1 在numpy内部被替换为适应数组大小所需的任何值。 - Jaime

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接