Python中flatten用法

Python中flatten用法

原创 2014年04月16日 10:20:02

一、用在数组

 

[python] view plain copy
 
  1. >>> a = [[1,3],[2,4],[3,5]]  
  2. >>> a = array(a)  
  3. >>> a.flatten()  
  4. array([1, 3, 2, 4, 3, 5])  

 

二、用在列表

 

如果直接用flatten函数会出错

 

[python] view plain copy
 
  1. >>> a = [[1,3],[2,4],[3,5]]  
  2. >>> a.flatten()  
  3.   
  4. Traceback (most recent call last):  
  5.   File "<pyshell#10>", line 1, in <module>  
  6.     a.flatten()  
  7. AttributeError: 'list' object has no attribute 'flatten'  

正确的用法

 

 

[python] view plain copy
 
  1. >>> a = [[1,3],[2,4],[3,5],["abc","def"]]  
  2. >>> a1 = [y for x in a for y in x]  
  3. >>> a1  
  4. [1, 3, 2, 4, 3, 5, 'abc', 'def']  

或者(不理解)

 

 

[python] view plain copy
 
  1. >>> a = [[1,3],[2,4],[3,5],["abc","def"]]  
  2. >>> flatten = lambda x: [y for l in x for y in flatten(l)] if type(x) is list else [x]  
  3. >>> flatten(a)  
  4. [1, 3, 2, 4, 3, 5, 'abc', 'def']  

 

三、用在矩阵

[python] view plain copy
 
  1. >>> a = [[1,3],[2,4],[3,5]]  
  2. >>> a = mat(a)  
  3. >>> y = a.flatten()  
  4. >>> y  
  5. matrix([[1, 3, 2, 4, 3, 5]])  
  6. >>> y = a.flatten().A  
  7. >>> y  
  8. array([[1, 3, 2, 4, 3, 5]])  
  9. >>> shape(y)  
  10. (1, 6)  
  11. >>> shape(y[0])  
  12. (6,)  
  13. >>> y = a.flatten().A[0]  
  14. >>> y  
  15. array([1, 3, 2, 4, 3, 5])  
posted @ 2017-11-22 00:20  吃饭了吗  阅读(866)  评论(0编辑  收藏  举报