从1D列表中创建2D列表

时间:2013-02-04 06:45:14

标签: python matrix

我对Python有点新,我希望将1D列表转换为2D列表,给定width的{​​{1}}和length

说我有一个matrix,我想制作此列表的list=[0,1,2,3]矩阵。

如何从2 by 2中获取matrix [[0,1],[2,3]] width = 2,length = 2?

3 个答案:

答案 0 :(得分:22)

尝试类似的东西:

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

答案 1 :(得分:6)

我认为你应该使用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,因为它会影响内置名称。

答案 2 :(得分:1)

NumPy的内置重塑功能可用于执行此类任务。

import numpy

length = 2
width = 2
_list = [0,1,2,3]
a = numpy.reshape(a, (length, width))
numpy.shape(a)

只要您更改列表中的值,并相应地更新“长度”和“宽度”的值,就不会收到任何错误。