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

时间:2011-03-03 16:26:49

标签: python list matrix numpy

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

[[0.16666667 0.66666667 0.16666667]]

类型:

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

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

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

10 个答案:

答案 0 :(得分:44)

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

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

答案 1 :(得分:15)

如果a是您的矩阵,请尝试

a.ravel().tolist()

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

答案 2 :(得分:14)

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

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

答案 3 :(得分:10)

另一种方式:

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

答案 4 :(得分:1)

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

答案 5 :(得分:1)

尝试这种简单的方法。它适用于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

答案 6 :(得分:1)

为什么不简单:

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]

答案 7 :(得分:1)

我认为getA1()可以胜任。{ 来自文档:

  

getA1()

     

将自己归为扁平的ndarray。

     

相当于np.asarray(x).ravel()

来自https://docs.scipy.org/doc/numpy/reference/generated/numpy.matrix.getA1.html

答案 8 :(得分:0)

我来到这里寻找将numpy矩阵转换为典型2D列表的方法。

对于numpy矩阵m:

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

如果您只想要一个1 x n矩阵的一维列表m:

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

答案 9 :(得分:0)

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

此代码片段将内置函数“float”(将某些内容转换为浮点数)应用于 a 的每个元素。由于 a 的第一个元素本身是一个数组,因此必须进行转置,以便每个数字都成为 a 本身的元素。在这个例子中,a.transpose()相当于np.matrix([[1],[2],[3],[4]])。