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 SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
May 06 Python
跟老齐学Python之for循环语句
Oct 02 Python
Python查找函数f(x)=0根的解决方法
May 07 Python
简单谈谈python中的多进程
Nov 06 Python
深入理解python中的select模块
Apr 23 Python
django2 快速安装指南分享
Jan 05 Python
PyQt5每天必学之单行文本框
Apr 19 Python
python3实现名片管理系统
Nov 29 Python
Python 常用模块 re 使用方法详解
Jun 06 Python
Python的numpy库下的几个小函数的用法(小结)
Jul 12 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
Sep 01 Python
Python实现EM算法实例代码
Oct 04 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
PHP 无限级分类
2017/05/04 PHP
File文件控件,选中文件(图片,flash,视频)即立即预览显示
2009/04/09 Javascript
Mootools 1.2教程 类(一)
2009/09/15 Javascript
Jqgrid表格随窗口大小改变而改变的简单实例
2013/12/28 Javascript
在JS中如何调用JSP中的变量
2014/01/22 Javascript
Javascript 读取操作Sql中的Xml字段
2014/10/09 Javascript
js限制文本框的输入内容代码分享(3类)
2015/08/20 Javascript
基于html5和nodejs相结合实现websocket即使通讯
2015/11/19 NodeJs
关于JavaScript和jQuery的类型判断详解
2016/10/08 Javascript
Vue常用指令V-model用法
2017/03/08 Javascript
JavaScript条件判断_动力节点Java学院整理
2017/06/26 Javascript
javascript中神奇的 Date对象小结
2017/10/12 Javascript
浅谈vue项目重构技术要点和总结
2018/01/23 Javascript
jQuery实现判断上传图片类型和大小的方法示例
2018/04/11 jQuery
jQuery+css last-child实现选择最后一个子元素操作示例
2018/12/10 jQuery
JavaScript实现美化滑块效果
2019/05/17 Javascript
layui原生表单验证的实例
2019/09/09 Javascript
javascript头像上传代码实例
2019/09/28 Javascript
Node配合WebSocket做多文件下载以及进度回传
2019/11/07 Javascript
JS实现表单中点击小眼睛显示隐藏密码框中的密码
2020/04/13 Javascript
javascript实现点击按钮切换轮播图功能
2020/09/23 Javascript
[03:59]5分钟带你了解什么是DOTA2(第二期)
2017/02/07 DOTA
Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
2016/07/02 Python
Django数据库表反向生成实例解析
2018/02/06 Python
多个应用共存的Django配置方法
2018/05/30 Python
pandas 对每一列数据进行标准化的方法
2018/06/09 Python
Python3实现定时任务的四种方式
2019/06/03 Python
python使用hdfs3模块对hdfs进行操作详解
2020/06/06 Python
解决python 执行sql语句时所传参数含有单引号的问题
2020/06/06 Python
会计自我鉴定
2014/02/04 职场文书
党员民主生活会个人整改措施材料
2014/09/16 职场文书
2014年化工厂工作总结
2014/11/25 职场文书
2015年度村委会工作总结
2015/04/29 职场文书
分析JVM源码之Thread.interrupt系统级别线程打断
2021/06/29 Java/Android
jackson json序列化实现首字母大写,第二个字母需小写
2021/06/29 Java/Android
深入浅出讲解Java8函数式编程
2022/01/18 Java/Android