Python中flatten( )函数及函数用法详解

flatten()函数用法

flatten是numpy.ndarray.flatten的一个函数,即返回一个一维数组

flatten只能适用于numpy对象,即array或者mat,普通的list列表不适用!。

a.flatten():a是个数组,a.flatten()就是把a降到一维,默认是按行的方向降 。
a.flatten().A:a是个矩阵,降维后还是个矩阵,矩阵.A(等效于矩阵.getA())变成了数组。

具体看下面的例子:

1.用在数组

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

2.用在矩阵(mat是numpy中转化为矩阵的函数)

>>> 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])

可以看到矩阵在使用flatten之后还是矩阵matrix,在使用.A之后才变成数组
3.用在列表

>>> 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']

这就是flatten的一些用法,有错误欢迎指正!

posted @ 2020-10-13 14:36  小Aer  阅读(1876)  评论(0编辑  收藏  举报