2011-02-18 194 views
3

泌到numpy的轉換導致的陣列,如:RGB值的numpy的和PIL重塑陣列

a = array([ [[r,g,b],[r,g,b].....[r,g,b],[r,g,b]] , [[r,g,b],[r,g,b.....]] , int8) 

三胞胎;行左右的時間內:

a[0] = [[r,g,b],[r,g,b].....[r,g,b],[r,g,b]] = first row 

是有一個快速的方法,以這樣的三胞胎numpy的陣列轉換回和福特 (以及特別是具有回..)

a = [[rrrr],[rrrrr],[rrrrr],.... [bbbbb],[bbbbbb],[bbbbbb]...,[ggggg],[ggg],[ggg]] 

a=[[rrr],[rrrrr],[.... ...]] **or** aa = [rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr..] 

b=[[bbb],[bbbbb],[.... ...]]**or** bb = [bbbbbbbbbbbbbbbbbbbbbbbbbb..] 

c=[[ggg],[ggggg],[....  .]] **or** cc = [ggggggggggggggggggggggggg..] 

我的問題我hav Ë喜歡AA BB CC的格式,並且知道圖像尺寸640×480如何得到它快速進入丸格式如下

a = array([ [[r,g,b],[r,g,b].....[r,g,b],[r,g,b]] , [[r,g,b],[r,g,b.....]] , int8) 

回答

4

是否a.T給你想要的是什麼?

我假設你已經使用numpy的asarray函數創建了你的數組。

import Image, numpy 
im = Image.open('test.png') 
a = numpy.asarray(im) 
R,G,B,A = a.T 

以上將給你4個單獨的二維數組,每個樂隊一個。

0

ahum所以答案工作,我可以輸入他們......嗯

嗯,事實上我沒有使用asarray因爲我在相反的方向上工作(asarry創造三胞胎),我有數據通道的形式。如此紅綠藍;我的數據看起來像這樣 a = [r,r,r,r,r,r,r,r,r ...] 其中r是一維數組中的所有紅色值,實際上這個通道圖像是紅。

b =所有藍色,c全部是綠色。 所以我的格式不是三胞胎。 我不知道是否有一個快速組合函數來生成這樣的三元組。事實上,Pil使用陣列內部的數組,我正在看pil,但是如果pygame或其他東西可以顯示我從通道中選擇是好的PIL不是必需的;但它接縫所有格式都使用三元組;而我的數據不包含它。由於NumPy的是,據我所知道的最重要的陣列庫,不知是否可以做這樣的數組操作,

它的悲傷,我不能在這裏提請解釋,我想我有什麼樣的a,b和c

一個= [123123123132]

b = [989898389398]

C = [343434343434]

d [A,b,C] = A [] + b [] + C [] >> >這是不是Python代碼這是我的思維代碼

因此d變成d [[a,b,c],[a,b,c],[a,b,c],...]

和d [0] = [ 9,3]