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()
很有用,即使它会生成嵌套列表。