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使用Supervisor来管理进程的方法
May 28 Python
python pandas消除空值和空格以及 Nan数据替换方法
Oct 30 Python
Python3.8中使用f-strings调试
May 22 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
Jun 12 Python
python实现机器人卡牌
Oct 06 Python
利用python Selenium实现自动登陆京东签到领金币功能
Oct 31 Python
Python操作注册表详细步骤介绍
Feb 05 Python
解决pytorch-yolov3 train 报错的问题
Feb 18 Python
Python查找不限层级Json数据中某个key或者value的路径方式
Feb 27 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
Mar 30 Python
Python流程控制语句的深入讲解
Jun 15 Python
python geopandas读取、创建shapefile文件的方法
Jun 29 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
PHP5新特性: 更加面向对象化的PHP
2006/11/18 PHP
hessian 在PHP中的使用介绍
2010/12/13 PHP
php实现html标签闭合检测与修复方法
2015/07/09 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
基于jQuery的仿flash的广告轮播代码
2010/11/04 Javascript
JavaScript instanceof 的使用方法示例介绍
2013/10/23 Javascript
JavaScript通过正则表达式实现表单验证电话号码
2014/03/07 Javascript
JavaScript中的ArrayBuffer详细介绍
2014/12/08 Javascript
jquery实现浮动在网页右下角的彩票开奖公告窗口代码
2015/09/04 Javascript
JavaScript Array对象详解
2016/03/01 Javascript
深入理解JavaScript中的call、apply、bind方法的区别
2016/05/30 Javascript
jquery表格datatables实例解析 直接加载和延迟加载
2016/08/12 Javascript
纯JS实现简单的日历
2017/06/26 Javascript
vue2中的keep-alive使用总结及注意事项
2017/12/21 Javascript
jQuery时间戳和日期相互转换操作示例
2018/12/07 jQuery
windows实现npm和cnpm安装步骤
2019/10/24 Javascript
react使用CSS实现react动画功能示例
2020/05/18 Javascript
vue中父子组件的参数传递和应用示例
2021/01/04 Vue.js
用Python写的图片蜘蛛人代码
2012/08/27 Python
Python自动扫雷实现方法
2015/07/25 Python
使用GitHub和Python实现持续部署的方法
2019/05/09 Python
tensor和numpy的互相转换的实现示例
2019/08/02 Python
Python ORM编程基础示例
2020/02/02 Python
python实现贪吃蛇双人大战
2020/04/18 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
Hotter Shoes美国官网:英国最受欢迎的舒适鞋
2018/08/02 全球购物
物业管理公司实习生自我鉴定
2013/09/19 职场文书
自荐信模版
2013/10/24 职场文书
医大实习自我鉴定
2013/12/07 职场文书
合唱兴趣小组活动总结
2014/07/10 职场文书
原告代理词范文
2015/05/25 职场文书
毕业设计工作总结
2015/08/14 职场文书
能用CSS实现的就不要麻烦JavaScript了
2021/10/05 HTML / CSS
python基础之类方法和静态方法
2021/10/24 Python
24年收藏2000多部退役军用电台
2022/02/18 无线电
如何利用python创作字符画
2022/06/25 Python