Как сделать список из матричной матрицы в Python

Я использую функцию dot () из numpy, чтобы умножить матрицу 3×3 на numpy.array 1×3. Выходной сигнал, например, выглядит следующим образом:

[[0.16666667 0.66666667 0.16666667]]

который имеет тип:

<class 'numpy.matrixlib.defmatrix.matrix'> 

как я могу преобразовать это в список. Поскольку я знаю, что результат всегда будет матрицей 1×3, поэтому он должен быть скрыт до списка, потому что мне нужно будет пропустить его позже для вычисления расстояния pearson двух из этих списков.

Итак, чтобы обобщить: как я могу составить список из этой матрицы?

Возможно, это не оптимальный способ, но следующие работы:

 a = numpy.matrix([[ 0.16666667, 0.66666667, 0.16666667]]) list(numpy.array(a).reshape(-1,)) 

или

 numpy.array(a).reshape(-1,).tolist() 

или

 numpy.array(a)[0].tolist() 

Используйте метод tolist () для объекта матрицы:

 >>> import numpy >>> m = numpy.matrix([1, 2, 3]) >>> type(m) <class 'numpy.core.defmatrix.matrix'> >>> m.tolist() [[1, 2, 3]] 

Если a – ваша матрица, попробуйте

 a.ravel().tolist() 

но вам не нужно превращать его в список, чтобы перебирать его.

Другой путь:

 >>> import numpy as np >>> m = np.matrix([1,2,3]) >>> np.array(m).flatten().tolist() [1,2,3] 
 m = numpy.matrix([[ 0.16666667, 0.66666667, 0.16666667]]) a = numpy.array(m)[0] for i in a: print i 

приводит к

 0.16666667 0.66666667 0.16666667 

Попробуйте этот упрощенный подход. Он работает с 1D массивами, не знаю с более высокими измерениями.

 import mumpy as np # to create a numpy array example a = np.array([1,2.5,3]) # your 1D numpy array b = [i for i in a] # your list out of the original numpy array 

почему не просто:

 list(a.flat) 

например:

 >>> import numpy as np >>> a = np.matrix([[ 0.16666667, 0.66666667, 0.16666667]]) >>> a matrix([[ 0.16666667, 0.66666667, 0.16666667]]) >>> a.flat <numpy.flatiter object at 0x0000000002DE8CC0> >>> a.flat.tolist() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'numpy.flatiter' object has no attribute 'tolist' >>> list(a.flat) [0.16666666999999999, 0.66666667000000002, 0.16666666999999999] 

Я пришел сюда, чтобы найти способ преобразования матриц numpy в типичные 2D-списки.

Для матричной матрицы m:

 my_2d_list = map(list, list(mA)) 

Если вам нужен только один размерный список из матрицы 1 xn m:

 my_1d_list = list(list(mA)[0]) 
 import numpy as np a = np.matrix([[1,2,3,4]]) b = map(float, a.transpose()) 

Этот фрагмент кода применит встроенную функцию «float» – которая преобразует что-то в число с плавающей запятой – к каждому элементу a . Поскольку первый элемент a является самим массивом, он должен быть транспонирован, так что каждое число становится элементом самого. a.transpose () эквивалентен np.matrix ([[1], [2], [3], [4]]) в этом примере.