我对Python有点新,我希望将1D列表转换为2D列表,给定width
的{{1}}和length
。
说我有一个matrix
,我想制作此列表的list=[0,1,2,3]
矩阵。
如何从2 by 2
中获取matrix [[0,1],[2,3]]
width
= 2,length
= 2?
答案 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)
只要您更改列表中的值,并相应地更新“长度”和“宽度”的值,就不会收到任何错误。