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 相关文章推荐
下载安装setuptool和pip linux安装pip    
Jan 24 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
Feb 13 Python
python爬取淘宝商品销量信息
Nov 16 Python
python Tkinter的图片刷新实例
Jun 14 Python
Django REST framework内置路由用法
Jul 26 Python
浅谈Python2之汉字编码为unicode的问题(即类似\xc3\xa4)
Aug 12 Python
python 图像处理画一个正弦函数代码实例
Sep 10 Python
Python object类中的特殊方法代码讲解
Mar 06 Python
Python Scrapy多页数据爬取实现过程解析
Jun 12 Python
Python openpyxl模块实现excel读写操作
Jun 30 Python
Expected conditions模块使用方法汇总代码解析
Aug 13 Python
python 实现有道翻译功能
Feb 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
php定时计划任务的实现方法详解
2013/06/06 PHP
WampServer下安装多个版本的PHP、mysql、apache图文教程
2015/01/07 PHP
js的一些常用方法小结
2011/06/29 Javascript
JavaScript 的继承
2011/10/01 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
2013/12/06 Javascript
利用浏览器全屏api实现js全屏
2014/01/16 Javascript
js确认删除对话框效果的示例代码
2014/02/20 Javascript
JS实现仿中关村论坛评分后弹出提示效果的方法
2015/02/23 Javascript
KnockoutJS 3.X API 第四章之事件event绑定
2016/10/10 Javascript
微信小程序 同步请求授权的详解
2017/08/04 Javascript
基于Vue实例生命周期(全面解析)
2017/08/16 Javascript
vue打包后显示空白正确处理方法
2017/11/01 Javascript
Webpack框架核心概念(知识点整理)
2017/12/22 Javascript
Angular(5.2-&gt;6.1)升级小结
2018/12/27 Javascript
js实现随机div颜色位置 类似满天星效果
2019/10/24 Javascript
node解析修改nginx配置文件操作实例分析
2019/11/06 Javascript
AngularJS动态生成select下拉框的方法实例
2019/11/17 Javascript
以一个投票程序的实例来讲解Python的Django框架使用
2016/02/18 Python
遍历python字典几种方法总结(推荐)
2016/09/11 Python
Python中将dataframe转换为字典的实例
2018/04/13 Python
使用Python进行QQ批量登录的实例代码
2018/06/11 Python
python skimage 连通性区域检测方法
2018/06/21 Python
VSCode基础使用与VSCode调试python程序入门的图文教程
2020/03/30 Python
python如何调用百度识图api
2020/09/29 Python
使用CSS3的::selection改变选中文本颜色的方法
2015/09/29 HTML / CSS
远程Wi-Fi宠物监控相机:Petcube
2017/04/26 全球购物
Web Service面试题:如何搭建Axis2的开发环境
2012/06/20 面试题
个人素质的自我评价分享
2013/12/16 职场文书
关工委先进个人事迹材料
2014/05/23 职场文书
励志演讲稿3分钟
2014/08/21 职场文书
2016参观监狱警示教育活动心得体会
2016/01/15 职场文书
2016干部作风整顿心得体会
2016/01/22 职场文书
Python学习之迭代器详解
2022/04/01 Python
Python Pytorch查询图像的特征从集合或数据库中查找图像
2022/04/09 Python
python和anaconda的区别
2022/05/06 Python