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模块学习 filecmp 文件比较
Aug 27 Python
Python使用smtplib模块发送电子邮件的流程详解
Jun 27 Python
利用Celery实现Django博客PV统计功能详解
May 08 Python
python WindowsError的错误代码详解
Jul 23 Python
Python3.6日志Logging模块简单用法示例
Jun 14 Python
Python实现数据可视化看如何监控你的爬虫状态【推荐】
Aug 10 Python
Python3 合并二叉树的实现
Sep 30 Python
python 列表、字典和集合的添加和删除操作
Dec 16 Python
Selenium 滚动页面至元素可见的方法
Mar 18 Python
Python改变对象的字符串显示的方法
Aug 01 Python
在Python3.74+PyCharm2020.1 x64中安装使用Kivy的详细教程
Aug 07 Python
python 如何停止一个死循环的线程
Nov 24 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
相对路径转化成绝对路径
2007/04/10 PHP
php实现httpclient类示例
2014/04/08 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
浅谈PHP匿名函数和闭包
2019/03/08 PHP
jquery cookie插件代码类
2009/05/26 Javascript
FusionCharts图表显示双Y轴双(多)曲线
2012/11/22 Javascript
JS Replace()的高级使用方法介绍
2013/06/29 Javascript
js 与 php 通过json数据进行通讯示例
2014/03/26 Javascript
jQuery实现倒计时按钮功能代码分享
2014/09/03 Javascript
JavaScript设置获取和设置属性的方法
2015/03/04 Javascript
Vue.JS入门教程之列表渲染
2016/12/01 Javascript
Bootstrap缩略图的创建方法
2017/03/22 Javascript
微信小程序 滚动到某个位置添加class效果实现代码
2017/04/19 Javascript
angular4 JavaScript内存溢出问题
2018/03/06 Javascript
基于Vue实现微信小程序的图文编辑器
2018/07/25 Javascript
Vue导出页面为PDF格式的实现思路
2018/07/31 Javascript
js纯前端实现腾讯cos文件上传功能的示例代码
2019/05/14 Javascript
Vue实现微信支付功能遇到的坑
2019/06/05 Javascript
node实现简单的增删改查接口实例代码
2019/08/22 Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
2020/07/27 Javascript
js面向对象方式实现拖拽效果
2021/03/03 Javascript
python中cPickle用法例子分享
2014/01/03 Python
跟老齐学Python之用while来循环
2014/10/02 Python
Python基于Matplotlib库简单绘制折线图的方法示例
2017/08/14 Python
Python内置模块logging用法实例分析
2018/02/12 Python
Python使用Django实现博客系统完整版
2020/09/29 Python
python实现任意位置文件分割的实例
2018/12/14 Python
在Pycharm terminal中字体大小设置的方法
2019/01/16 Python
利用Python优雅的登录校园网
2020/10/21 Python
美国领先的眼镜和太阳镜在线零售商:Glasses.com
2019/08/26 全球购物
专业幼师实习生自我鉴定范文
2013/12/08 职场文书
晚会主持词开场白
2014/03/17 职场文书
机械工程及其自动化专业求职信
2014/08/08 职场文书
课外活动总结
2015/02/04 职场文书
恰同学少年观后感
2015/06/08 职场文书
《总之就是很可爱》新作短篇动画《总之就是很可爱~制服~》将于2022年夏天播出
2022/04/07 日漫