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


Posted in Python onNovember 02, 2018

flatten()函数用法

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

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

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

1、用于array(数组)对象

>>> from numpy import *
>>> a=array([[1,2],[3,4],[5,6]])
>>> a
array([[1, 2],
    [3, 4],
    [5, 6]])
>>> a.flatten() #默认按行的方向降维
array([1, 2, 3, 4, 5, 6])
>>> a.flatten('F') #按列降维
array([1, 3, 5, 2, 4, 6]) 
>>> a.flatten('A') #按行降维
array([1, 2, 3, 4, 5, 6])
>>>

2、用于mat(矩阵)对象

>>> a=mat([[1,2,3],[4,5,6]])
>>> a
matrix([[1, 2, 3],
    [4, 5, 6]])
>>> a.flatten()
matrix([[1, 2, 3, 4, 5, 6]])
>>> a=mat([[1,2,3],[4,5,6]])
>>> a
matrix([[1, 2, 3],
    [4, 5, 6]])
>>> a.flatten()
matrix([[1, 2, 3, 4, 5, 6]])
>>> y=a.flatten().A 
>>> shape(y)
(1L, 6L)
>>> shape(y[0]) 
(6L,)
>>> a.flatten().A[0] 
array([1, 2, 3, 4, 5, 6])
>>>

从中可以看出matrix.A的用法和矩阵发生的变化。

3、但是该方法不能用于list对象,想要list达到同样的效果可以使用列表表达式:

>>> a=array([[1,2],[3,4],[5,6]])
>>> [y for x in a for y in x]
[1, 2, 3, 4, 5, 6]
>>> 
!

下面看下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])

总结

以上所述是小编给大家介绍的Python中flatten( )函数及函数用法详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Cython 三分钟入门教程
Sep 17 Python
python类继承用法实例分析
Oct 10 Python
Python实现对excel文件列表值进行统计的方法
Jul 25 Python
python入门基础之用户输入与模块初认识
Nov 14 Python
Python多线程处理实例详解【单进程/多进程】
Jan 30 Python
Python多个装饰器的调用顺序实例解析
May 22 Python
python中return不返回值的问题解析
Jul 22 Python
对Python 字典元素进行删除的方法
Jul 31 Python
Python使用pycharm导入pymysql教程
Sep 16 Python
python破解同事的压缩包密码
Oct 14 Python
微软开源最强Python自动化神器Playwright(不用写一行代码)
Jan 05 Python
详解appium自动化测试工具(monitor、uiautomatorviewer)
Jan 27 Python
[原创]Python入门教程5. 字典基本操作【定义、运算、常用函数】
Nov 01 #Python
Python拼接字符串的7种方法总结
Nov 01 #Python
在python中bool函数的取值方法
Nov 01 #Python
numpy给array增加维度np.newaxis的实例
Nov 01 #Python
Python 中导入csv数据的三种方法
Nov 01 #Python
numpy向空的二维数组中添加元素的方法
Nov 01 #Python
CentOS 7 安装python3.7.1的方法及注意事项
Nov 01 #Python
You might like
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
java EJB 加密与解密原理的一个例子
2008/01/11 PHP
php 删除cookie和浏览器重定向
2009/03/16 PHP
php密码生成类实例
2014/09/24 PHP
为百度UE编辑器上传图片添加水印功能
2015/04/16 PHP
WordPress中对访客评论功能的一些优化方法
2015/11/24 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
PHP-FPM 的管理和配置详解
2019/02/17 PHP
在TP5数据库中四个字段实现无限分类的示例
2019/10/18 PHP
js滚动条多种样式,推荐
2007/02/05 Javascript
js中的屏蔽的使用示例
2013/07/30 Javascript
Jquery 的outerHeight方法使用介绍
2013/09/11 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
2015/05/14 Javascript
jQuery实现的仿百度分页足迹效果代码
2015/10/30 Javascript
Angular2  NgModule 模块详解
2016/10/19 Javascript
原生node.js案例--前后台交互
2017/02/20 Javascript
JavaScript中双符号的运算详解
2017/03/12 Javascript
Vue-Router进阶之滚动行为详解
2017/09/13 Javascript
详解vue2.0+vue-video-player实现hls播放全过程
2018/03/02 Javascript
加快Vue项目的开发速度的方法
2018/12/12 Javascript
vue实现购物车抛物线小球动画效果的方法详解
2019/02/13 Javascript
Node.js系列之连接DB的方法(3)
2019/08/30 Javascript
Python中关于Sequence切片的下标问题详解
2017/06/15 Python
深入理解Python 关于supper 的 用法和原理
2018/02/28 Python
python 请求服务器的实现代码(http请求和https请求)
2018/05/25 Python
python3使用pandas获取股票数据的方法
2018/12/22 Python
python模拟登陆,用session维持回话的实例
2018/12/27 Python
Python turtle库绘制菱形的3种方式小结
2019/11/23 Python
浅谈python输出列表元素的所有排列形式
2020/02/26 Python
Python tcp传输代码实例解析
2020/03/18 Python
Python实现手绘图效果实例分享
2020/07/22 Python
会计电算化应届生自荐信
2014/02/25 职场文书
干部作风建设心得体会
2014/10/22 职场文书
Pytorch中Softmax与LogSigmoid的对比分析
2021/06/05 Python
深入理解go slice结构
2021/09/15 Golang
Linux在两个服务器直接传文件的操作方法
2022/08/05 Servers