Python 矩阵,行和列

0 投票
2 回答
2059 浏览
提问于 2025-04-16 17:23

我有一个问题矩阵:

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]]]

非常感谢

2 个回答

1

Claudiu的回答可能更简单明了,但这里有一个替代方案,它可以递归地遍历任何深度的列表。

>>> 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]]]
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]]

接着把这个方法扩展到二维列表。

撰写回答