2013-02-13 55 views
3

我正在對圖像執行數據挖掘。每個像素都被視爲一個數據點。圖像被如下:numpy數組的變平

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 2013-02-13 21:52:57

+0

這是真的。我有\t obs = reshape(im,(im.shape [0] * im.shape [1],im.size /(im.shape [0] * im.shape [1]))) – 2013-02-13 23:49:25

回答

3

你可以這樣做:

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

您能請詳細說明此代碼?它完美的作品。形狀[-1]是維數,在-1之前它怎麼樣? – 2013-02-15 00:14:32

+1

@DzungNguyen'-1'被numpy內部替換爲所需的任何值以適應數組的大小。 – Jaime 2013-02-15 00:42:58