Python 从一维列表中创建二维列表

Python 从一维列表中创建二维列表,python,matrix,Python,Matrix,我对Python有点陌生,我想将1D列表转换为2D列表,给定此矩阵的宽度和长度 假设我有一个list=[0,1,2,3],我想做一个2x2矩阵 如何从列表中获取矩阵[[0,1],[2,3]宽度=2,长度=2?试试这样的方法: 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,

我对Python有点陌生,我想将1D列表转换为2D列表,给定此
矩阵的
宽度
长度

假设我有一个
list=[0,1,2,3]
,我想做一个
2x2
矩阵


如何从
列表中获取
矩阵[[0,1],[2,3]
宽度
=2,
长度
=2?

试试这样的方法:

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

我认为您应该使用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)

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

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

import numpy

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

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

可能重复-为什么使用numpy比使用root的方法更好?这取决于您需要2D结构做什么,但当您以几乎任何方式使用矩阵时,numpy都会更有效,方便灵活。ValueError:无法将大小为1000000的数组重塑为形状(2,2)。重塑(-1,2)将完成Trickan的另一个例子,说明我为什么喜欢Python!谢谢@root!请问您为什么添加了与@wim内容相同的新答案?你补充了什么,他的没有?