2010-10-29 119 views
3

您好 我需要一个矩阵转换成一个列表,下面的例子我想一个矩阵转换到一个列表蟒蛇

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

+0

请您详细说明一下吗?矩阵当前保存的状态是什么?它是否在文本文件中,文本文件格式与您给出的第一个示例类似?它是作为Numpy数组还是矩阵存储的? – gotgenes 2010-10-29 03:44:14

回答

2

这样做是最好的方法:

result = map(tuple, Matrix) 
+0

@gotgenes,两者都正确。我更新了。我通常忘记'chain.from_iterable'。感谢您的提醒。 – aaronasterling 2010-10-29 04:22:23

+3

我理解downvoting当我误解了问题(哪些没有发生),但为什么实际上创建元组列表的唯一答案downvoted_after_我修好了?是因为我看起来像嬉皮士吗?如果它让你感觉更好(而不是说它是你该死的生意),但我至少每两个月刮一次,目前正在穿马球。我只是一个懒惰的嬉皮士来更新我的照片。 – aaronasterling 2010-10-29 04:39:37

+0

@aaronsterling也许这位懒惰的选民是懒惰的,阅读我的两条评论,而没有检查更新后的代码是否正确?由于这段代码是正确的,所以我删除了我之前的两条评论(对“矩阵”的结构做了一些假设,这是由OP界定的)。 – gotgenes 2010-10-29 13:52:43

5

这是一个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]] 
1

如果你正在使用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 

这不会消耗额外内存

+0

它也使阵列变平,这不是OP想要的(我认为?)。无论如何,你指出如果你只是想迭代它,没有必要将它转换成列表。就像OP似乎想要的那样,简单地遍历数组本身将会对行进行分组。 – 2010-10-29 03:55:25