Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我想把一个矩阵转换成一个列表_Python - Fatal编程技术网

Python 我想把一个矩阵转换成一个列表

Python 我想把一个矩阵转换成一个列表,python,Python,你好 我需要将矩阵转换为列表,如下例所示 Matrix: [[ 1. 6. 13. 10. 2.] [ 2. 9. 10. 13. 15.] [ 3. 15. 13. 14. 16.] [ 4. 5. 14. 13. 6.] [ 5. 18. 16. 4. 3.] [ 6. 7. 12. 18. 3.] [ 7. 1. 8. 17. 11.] [ 8. 14. 5. 4. 16

你好 我需要将矩阵转换为列表,如下例所示

Matrix:
[[  1.   6.  13.  10.   2.]
 [  2.   9.  10.  13.  15.]
 [  3.  15.  13.  14.  16.]
 [  4.   5.  14.  13.   6.]
 [  5.  18.  16.   4.   3.]
 [  6.   7.  12.  18.   3.]
 [  7.   1.   8.  17.  11.]
 [  8.  14.   5.   4.  16.]
 [  9.  16.  18.  17.  15.]
 [ 10.   8.   9.  15.  17.]
 [ 11.  11.  17.  18.  12.]]

List:
[(1, 6, 13, 10, 2),  (2, 9, 10, 13, 15), (3, 15, 13, 14, 16),
 (4, 5, 14, 13, 6),  (5, 18, 16, 4, 3),  (6, 7, 12, 18, 3), 
 (7, 1, 8, 17, 11),  (8, 14, 5, 4, 16),  (9, 16, 18, 17, 15),
 (10, 8, 9, 15, 17), (11, 11, 17, 18, 12)]

Thx在adavance

最好的方法是:

result = map(tuple, Matrix)

这是numpy矩阵吗?如果是这样,只需使用
tolist()
方法即可。例如:

import numpy as np
x = np.matrix([[1,2,3],
               [7,1,3],
               [9,4,3]])
y = x.tolist()
这将产生:

y --> [[1, 2, 3], [7, 1, 3], [9, 4, 3]]

如果您正在使用numpy,并且只想将矩阵作为列表遍历,那么您可以

from numpy import array
m = [[  1.   6.  13.  10.   2.]
 [  2.   9.  10.  13.  15.]
 [  3.  15.  13.  14.  16.]
 [  4.   5.  14.  13.   6.]
 [  5.  18.  16.   4.   3.]
 [  6.   7.  12.  18.   3.]
 [  7.   1.   8.  17.  11.]
 [  8.  14.   5.   4.  16.]
 [  9.  16.  18.  17.  15.]
 [ 10.   8.   9.  15.  17.]
 [ 11.  11.  17.  18.  12.]]

for x in array(m).flat:
   print x

这不会消耗额外的内存,或者您可以使用以下其中之一:

1- li = list(i for j in yourMatrix for i in j)
2- li = sum(yourMatrix, [])

你能详细说明一下吗?矩阵的当前保存状态是什么?它是一个文本文件,并且文本文件格式与您给出的第一个示例相同吗?它是以Numpy数组还是矩阵的形式存储的?它也会使数组变平,而这不是想要的OP(我想?)。不管怎样,您指出如果您只想对其进行迭代,就不需要将其转换为列表,这是非常正确的。只需在数组本身上迭代,就可以按照OP的要求对行进行分组。@gotgenes,两种计数都正确。我更新了。我通常忘记了链。从_iterable。谢谢你的提醒。当我误解了这个问题(这没有发生)时,我就理解了否决权,但是为什么在我修正了这个问题之后,唯一一个真正创建元组列表的答案被否决了呢?是因为我看起来像个嬉皮士吗?如果这能让你感觉好一点(这不关你的事),但我至少每两个月刮一次胡子,现在穿着马球衫。“我是个懒散的嬉皮士,更新我的照片实在太懒了。@aaronsterling也许落选的投票者就是那个懒散的人,读了我的两条评论,却没有检查更新的代码的正确性?我已经删除了我之前的两条评论,因为这段代码是正确的(对
矩阵的结构做了一些假设,这是OP定义不清的)。@aaronsterling-提醒我,如果看起来像嬉皮士会让你失望,千万不要在这里贴我自己的照片!:)无论如何,我也不知道你为什么会被否决。。。(+1来自我)你的答案是唯一一个真正给出元组列表的答案。我之所以把我的留在这里,是因为知道
ndarray.tolist()
很有用,即使它会生成嵌套列表。