20

我对 Python 有点陌生,我想将 1D 列表转换为 2D 列表,给定this的widthand 。lengthmatrix

假设我有一个list=[0,1,2,3]并且我想制作2 by 2这个列表的矩阵。

我怎样才能得到matrix [[0,1],[2,3]] width=2, length=2list呢?

4

2 回答 2

42

尝试这样的事情:

In [53]: l = [0,1,2,3]

In [54]: def to_matrix(l, n):
    ...:     return [l[i:i+n] for i in xrange(0, len(l), n)]

In [55]: to_matrix(l,2)
Out[55]: [[0, 1], [2, 3]]
于 2013-02-04T06:51:41.557 回答
11

我认为您应该使用专为处理矩阵/数组而构建的 numpy,而不是列表列表。看起来像这样:

>>> import numpy as np
>>> list_ = [0,1,2,3]
>>> a = np.array(list_).reshape(2,2)
>>> a
array([[0, 1],
       [2, 3]])
>>> a.shape
(2, 2)

避免调用变量list,因为它会隐藏内置名称。

于 2013-02-04T07:00:15.910 回答