Python中flatten用法
Python中flatten用法
一、用在数组
- >>> a = [[1,3],[2,4],[3,5]]
- >>> a = array(a)
- >>> a.flatten()
- array([1, 3, 2, 4, 3, 5])
二、用在列表
如果直接用flatten函数会出错
- >>> a = [[1,3],[2,4],[3,5]]
- >>> a.flatten()
- Traceback (most recent call last):
- File "<pyshell#10>", line 1, in <module>
- a.flatten()
- AttributeError: 'list' object has no attribute 'flatten'
正确的用法
- >>> a = [[1,3],[2,4],[3,5],["abc","def"]]
- >>> a1 = [y for x in a for y in x]
- >>> a1
- [1, 3, 2, 4, 3, 5, 'abc', 'def']
或者(不理解)
- >>> a = [[1,3],[2,4],[3,5],["abc","def"]]
- >>> flatten = lambda x: [y for l in x for y in flatten(l)] if type(x) is list else [x]
- >>> flatten(a)
- [1, 3, 2, 4, 3, 5, 'abc', 'def']
三、用在矩阵
- >>> a = [[1,3],[2,4],[3,5]]
- >>> a = mat(a)
- >>> y = a.flatten()
- >>> y
- matrix([[1, 3, 2, 4, 3, 5]])
- >>> y = a.flatten().A
- >>> y
- array([[1, 3, 2, 4, 3, 5]])
- >>> shape(y)
- (1, 6)
- >>> shape(y[0])
- (6,)
- >>> y = a.flatten().A[0]
- >>> y
- array([1, 3, 2, 4, 3, 5])