Вопрос к вашему вопросу
Пока Свен и Нави ответили на ваш вопрос о том, как конвертировать
x = scipy.matrix([1,2,3]).transpose()
в список, я задам вопрос, прежде чем ответить:
- Почему вы используете матрицу Nx1 вместо массива?
Использование массива вместо матрицы
Если вы посмотрите на страницу вики / документации Numpy for Matlab Users, в разделе 3 обсуждается «массив» или «матрица»? Что я должен использовать? . Краткий ответ: вы должны использовать массив.
Одним из преимуществ использования массива является то, что:
Вы можете рассматривать массивы ранга 1 как векторы строк или столбцов. точка (A, v) обрабатывает v как вектор столбца, а точка (v, A) рассматривает v как вектор строки. Это избавит вас от необходимости набирать много транспонирований.
Кроме того, как указано в справочной документации Numpy , «матричные объекты всегда двумерны». Вот почему x.tolist()
вернул вам вложенный список [[1], [2], [3]]
.
Поскольку вам нужен объект Nx1, я бы рекомендовал использовать массив следующим образом:
>>> import scipy
>>> x = scipy.array([1,2,3])
>>> x
array([1, 2, 3])
>>> y = x.tolist() // That's it. A clean, succinct conversion to a list.
>>> y
[1, 2, 3]
Если вы действительно хотите использовать матрицу
Если по какой-то причине вам действительно нужно / хотите использовать матрицу вместо массива, вот что я бы сделал:
>>> import scipy
>>> x = scipy.matrix([1,2,3]).transpose()
>>> x
matrix([[1],
[2],
[3]])
>>> y = x.T.tolist()[0]
>>> y
[1, 2, 3]
Словом, x.T.tolist()[0]
будет:
- Транспонировать матрицу x с помощью атрибута
.T
- Преобразовать транспонированную матрицу во вложенный список, используя
.tolist()
- Возьмите первый элемент из вложенного списка, используя
[0]