Подтвердить что ты не робот

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

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

[[0.16666667 0.66666667 0.16666667]]

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

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

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

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

4b9b3361

Ответ 1

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

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()

Ответ 2

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

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

Ответ 3

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

a.ravel().tolist()

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

Ответ 4

Другой способ:

>>> import numpy as np
>>> m = np.matrix([1,2,3])
>>> np.array(m).flatten().tolist()
[1,2,3]

Ответ 5

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

Ответ 6

Попробуйте этот упрощенный подход. Он работает с 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

Ответ 7

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

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]

Ответ 9

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

Для матрицы numpy m:

my_2d_list = map(list, list(m.A))

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

my_1d_list = list(list(m.A)[0])

Ответ 10

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]]) в этом примере.