如何在 Python 中从 Numpy 矩阵创建列表

发布于 2024-10-20 07:11:39 字数 329 浏览 5 评论 0原文

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

[[ 0.16666667 0.66666667 0.16666667]]

其类型为:

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

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

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

I using the dot() function from numpy to multiply a matrix of 3x3 with a numpy.array of 1x3. The output is for example this:

[[ 0.16666667 0.66666667 0.16666667]]

which is of type:

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

how can I convert this to a list. Because I know the result will always be a matrix of 1x3 so it should be coverted to a list because I need to be able to loop through it later for calculation the pearson distance of two of those lists.

So to summarize: how can I make a list from this matrix?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(10

做个少女永远怀春 2024-10-27 07:11:39

可能不是执行此操作的最佳方法,但以下方法有效:

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

May not be the optimal way to do this but the following works:

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

or

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

or

numpy.array(a)[0].tolist()
爱要勇敢去追 2024-10-27 07:11:39

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

a.ravel().tolist()

,但您不需要将其转换为列表来迭代它。

If a is your matrix, try

a.ravel().tolist()

but you don't need to turn it into a list to iterate over it.

音盲 2024-10-27 07:11:39

在矩阵上使用 tolist() 方法目的 :

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

Use the tolist() method on the matrix object :

>>> import numpy
>>> m = numpy.matrix([1, 2, 3])
>>> type(m)
<class 'numpy.core.defmatrix.matrix'>
>>> m.tolist()
[[1, 2, 3]]
许一世地老天荒 2024-10-27 07:11:39

另一种方式:

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

Another way:

>>> import numpy as np
>>> m = np.matrix([1,2,3])
>>> np.array(m).flatten().tolist()
[1,2,3]
因为看清所以看轻 2024-10-27 07:11:39

为什么不简单:

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]

why not simple:

list(a.flat)

for example:

>>> 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]
怕倦 2024-10-27 07:11:39
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
m = numpy.matrix([[ 0.16666667, 0.66666667, 0.16666667]])
a = numpy.array(m)[0]

for i in a:
    print i

results in

0.16666667
0.66666667
0.16666667
你另情深 2024-10-27 07:11:39

我来这里寻找一种将 numpy 矩阵转换为典型的二维列表的方法。

对于 numpy 矩阵 m:

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

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

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

I came here looking for a way to convert numpy matrices to typical 2D lists.

For a numpy matrix m:

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

If you just want a one dimensional list from a 1 x n matrix m:

my_1d_list = list(list(m.A)[0])
人生百味 2024-10-27 07:11:39

尝试这种简单的方法。它适用于一维数组,不知道是否适用于更高维度。

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

Try this simplistic approach. It works with 1D arrays, do not know with higher dimensions.

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
浪漫人生路 2024-10-27 07:11:39

我认为 getA1() 可以完成这项工作。
从文档中:

getA1()

以展平的 ndarray 形式返回 self。

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

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

I think getA1() can do the job.
From the documentation:

getA1()

Return self as a flattened ndarray.

Equivalent to np.asarray(x).ravel()

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

画▽骨i 2024-10-27 07:11:39
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]]) 。

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

This code snippet will apply the built-in function "float" - which converts something to a floating point number - to every element of a. Since the first element of a is an array itself, it has to be transposed, so that every number becomes an element of a itself. a.transpose() is equivalent to np.matrix([[1],[2],[3],[4]]) in this example.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文