2012-12-19 33 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()