如何在Python中使用Numpy Matrix制作List

Jav*_*aaa 39 python numpy list matrix

我使用numpy中的dot()函数将3x3的矩阵与1x3的numpy.array相乘.输出例如是:

[[0.16666667 0.66666667 0.16666667]]

其类型:

<class 'numpy.matrixlib.defmatrix.matrix'>
Run Code Online (Sandbox Code Playgroud)

我该如何将其转换为列表.因为我知道结果将始终是1x3的矩阵所以它应该被转换为列表,因为我需要能够稍后循环它以计算其中两个列表的皮尔逊距离.

总结一下:如何从这个矩阵中制作一个列表?

Jos*_*del 44

可能不是最佳方式,但以下工作:

a = numpy.matrix([[ 0.16666667, 0.66666667, 0.16666667]])
list(numpy.array(a).reshape(-1,))
Run Code Online (Sandbox Code Playgroud)

要么

numpy.array(a).reshape(-1,).tolist()
Run Code Online (Sandbox Code Playgroud)

要么

numpy.array(a)[0].tolist()
Run Code Online (Sandbox Code Playgroud)


Sve*_*ach 15

如果a是你的矩阵,试试吧

a.ravel().tolist()
Run Code Online (Sandbox Code Playgroud)

但是你不需要把它变成一个列表来迭代它.

  • @Martin:不,如果您的矩阵首先只有一行,那么这只是多余的. (2认同)

tit*_*ito 14

在矩阵对象上使用tolist()方法:

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


Ale*_*dro 10

其他方式:

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