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 相关文章推荐
python实现html转ubb代码(html2ubb)
Jul 03 Python
python多线程方式执行多个bat代码
Jun 07 Python
Python数据结构之栈、队列的实现代码分享
Dec 04 Python
python批量替换多文件字符串问题详解
Apr 22 Python
python实现内存监控系统
Mar 07 Python
python pandas消除空值和空格以及 Nan数据替换方法
Oct 30 Python
Python设计模式之模板方法模式实例详解
Jan 17 Python
Python hexstring-list-str之间的转换方法
Jun 12 Python
Python全栈之列表数据类型详解
Oct 01 Python
解决Python中回文数和质数的问题
Nov 24 Python
使用Pandas的Series方法绘制图像教程
Dec 04 Python
Django静态文件加载失败解决方案
Aug 26 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
星际中一些鲜为人知的详细资料
2020/03/04 星际争霸
傻瓜化配置PHP环境――Appserv
2006/12/13 PHP
PHP 循环删除无限分类子节点的实现代码
2013/06/21 PHP
跟我学Laravel之配置Laravel
2014/10/15 PHP
PHP基于反射机制实现插件的可插拔设计详解
2016/11/10 PHP
PHP 数组操作详解【遍历、指针、函数等】
2020/05/13 PHP
JXTree对象,读取外部xml文件数据,生成树的函数
2007/04/02 Javascript
JS提交并解析后台返回的XML的代码
2008/11/03 Javascript
现如今最流行的JavaScript代码规范
2014/03/08 Javascript
js实现的点击数量加一可操作数据库
2014/05/09 Javascript
javascipt:filter过滤介绍及使用
2014/09/10 Javascript
AngularJS ng-controller 指令简单实例
2016/08/01 Javascript
javascript 定时器工作原理分析
2016/12/03 Javascript
jQuery插件zTree实现单独选中根节点中第一个节点示例
2017/03/08 Javascript
微信小程序之购物车功能
2020/09/23 Javascript
微信小程序实现多宫格抽奖活动
2020/04/15 Javascript
详解Vue路由自动注入实践
2019/04/17 Javascript
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
antd配置config-overrides.js文件的操作
2020/10/31 Javascript
python解析html开发库pyquery使用方法
2014/02/07 Python
Python IDE PyCharm的基本快捷键和配置简介
2015/11/04 Python
Python实现字典按照value进行排序的方法分析
2017/12/23 Python
对Python random模块打乱数组顺序的实例讲解
2018/11/08 Python
python实现Pyecharts实现动态地图(Map、Geo)
2020/03/25 Python
HTML5页面音视频在微信和app下自动播放的实现方法
2016/10/20 HTML / CSS
Linux如何修改文件和文件夹的权限
2012/06/27 面试题
软件生产职位结构化面试主要考察要素及面试题库
2015/06/12 面试题
使用Vue.js和MJML创建响应式电子邮件
2021/03/23 Vue.js
班组长的岗位职责
2013/12/09 职场文书
微信营销策划方案
2014/02/24 职场文书
2014第二批党的群众路线教育实践活动对照检查材料思想汇报
2014/09/18 职场文书
班主任2015新年寄语
2014/12/08 职场文书
劳动仲裁撤诉申请书
2015/05/18 职场文书
八年级作文之友情
2019/11/25 职场文书
Nginx访问日志及错误日志参数说明
2021/03/31 Servers
详解MySQL InnoDB存储引擎的内存管理
2021/04/08 MySQL