2012-12-19 61 views
6

我目前得到:試圖矩陣1 * 3轉換成一個列表

y=[[ 0.16666667] 
[-0.16666667] 
[ 0.16666667]] 

這出來使用功能的IM的,我需要把上面成一個列表如下格式:

x= [0.16666667,-0.16666667,0.16666667] 

我試圖名單(Y),但這是不行的,因爲它返回:

[array([ 0.16666667]), array([-0.16666667]), array([ 0.16666667])] 

究竟如何,我會做到這一點?

+0

請參閱此鏈接(http://stackoverflow.com/questions/4048792/i-want-to-convert-a - 矩陣到一個列表的Python /)。這可能會幫助你。 –

+0

這是一個平面嵌套列表的常見要求,請看[this](http://stackoverflow.com/questions/406121/flattening-a-shallow-list-in-python) – xiaowl

+0

是ya矩陣還是數組? – mtrw

回答

6
my_list = [col for row in matrix for col in row] 
+0

工作!謝謝! – user1819717

+0

@ user1819717如果有用,請不要忘記接受答案。 – Trufa

+0

對生成器表達式或列表理解中的多級迭代的解釋是經常讓人困惑的東西,因此應該非常小心地使用;一旦你找到了'for'的陳述,他們就會被從左到右的處理,而不是更加明顯的對我和另外幾個人來說,那就是我已經說過的話這件事從內向外。雖然我知道這一點,但我實際上是在幾天前[通過賦值語句被抓住了](http://stackoverflow.com/questions/13945048)......他們也是從左到右工作。 –

1

從每個子列表抓鬥的第一個元素,採用list comprehension

x = [elt[0] for elt in y] 
4

可以使用numpy的.tolist()方法:

array.tolist() 

還有一個好處給它。它與matrix對象一起使用,列表理解不。如果您想先刪除尺寸,可以使用numpy方法來實現,例如array.squeeze()