2011-05-10 197 views
0

我有一些問題矩陣:Python的矩陣,行和列

b= [[-2.5, 0.5],  #b is random matrix 
    [-1.5, -0.5], 
    [-0.5, 0.5]] 

如何通過B獲得:

b=[[[-2.5], [0.5]], [[-1.5], [-0.5]], [[-0.5], [0.5]]] 

非常感謝

+0

b真的是矩陣還是列表的列表? – talonmies 2011-05-10 19:59:00

+0

它取決於b是來自numpy的列表或數組/矩陣。 – 2011-05-10 20:10:05

+0

只有** class numpy.matrix **(http://docs.scipy.org/doc/numpy/reference/generated/numpy.matrix.html)創建了真正的矩陣。你的對象不是矩陣,而是列表的列表 – eyquem 2011-05-10 21:15:14

回答

4
>>> b= [[-2.5, 0.5],  #b is random matrix 
    [-1.5, -0.5], 
    [-0.5, 0.5]] 
>>> [[[val] for val in row] for row in b] 
[[[-2.5], [0.5]], [[-1.5], [-0.5]], [[-0.5], [0.5]]] 

說明:考慮清單:

>>> oned = [1, 2, 3] 

你可以用一個列表理解重新創建:

>>> [val for val in oned] 
[1, 2, 3] 

然後只是包裝的每個元素在它自己的名單:

>>> [[val] for val in oned] 
[[1], [2], [3]] 

擴展,爲兩個維度。

+0

正是我所建議的。 +1 – 2011-05-10 21:11:10

1

Claudiu's answer可能更直接,但這是一個遞歸遍歷任何深度列表的列表的替代解決方案。

>>> listify = lambda x: map(listify, x) if isinstance(x, list) else [x] 
>>> listify(b) 
[[[-2.5], [0.5]], [[-1.5], [-0.5]], [[-0.5], [0.5]]]