Ответ 1
Попробуйте что-то вроде этого:
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]]
Я немного новичок в Python, и я хочу преобразовать 1D-список в 2D-список, учитывая width
и length
этого matrix
.
Скажем, у меня есть list=[0,1,2,3]
, и я хочу создать матрицу 2 by 2
этого списка.
Как я могу получить matrix [[0,1],[2,3]]
width
= 2, length
= 2 из list
?
Попробуйте что-то вроде этого:
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)
Избегайте вызова переменной list
, поскольку она затеняет встроенное имя.
Для такой задачи можно использовать встроенную функцию изменения формы NumPy.
import numpy
length = 2
width = 2
_list = [0,1,2,3]
a = numpy.reshape(a, (length, width))
numpy.shape(a)
Пока вы изменяете значения в своем списке и соответственно обновляете значения 'length' и 'width', вы не должны получать никаких ошибок.