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入门篇之条件、循环
Oct 17 Python
Python列表生成器的循环技巧分享
Mar 06 Python
Linux CentOS7下安装python3 的方法
Jan 21 Python
python字典快速保存于读取的方法
Mar 23 Python
python pcm音频添加头转成Wav格式文件的方法
Jan 09 Python
详解python中@的用法
Mar 27 Python
python中调试或排错的五种方法示例
Sep 12 Python
使用Python函数进行模块化的实现
Nov 15 Python
Django模板标签{% for %}循环,获取制定条数据实例
May 14 Python
keras 实现轻量级网络ShuffleNet教程
Jun 19 Python
Python实现快速大文件比较代码解析
Sep 04 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
Nov 06 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
hadoop常见错误以及处理方法详解
2013/06/19 PHP
php实现图片等比例缩放代码
2015/07/23 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
2015/12/07 PHP
php array_merge_recursive 数组合并
2016/10/26 PHP
js 延迟加载 改变JS的位置加快网页加载速度
2012/12/11 Javascript
jquery实现tr元素的上下移动示例代码
2013/12/20 Javascript
JS限制文本框只能输入数字和字母方法
2015/02/28 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
2015/03/13 Javascript
在JavaScript中正确引用bind方法的应用
2015/05/11 Javascript
javascript实现图片跟随鼠标移动效果的方法
2015/05/13 Javascript
使用jQuery在移动页面上添加按钮和给按钮添加图标
2015/12/04 Javascript
jQuery时间插件jquery.clock.js用法实例(5个示例)
2016/01/14 Javascript
JS判断字符串变量是否含有某个字串的实现方法
2016/06/03 Javascript
easyUI下拉列表点击事件使用方法
2017/05/18 Javascript
Vue二次封装axios为插件使用详解
2018/05/21 Javascript
vue组件中实现嵌套子组件案例
2020/08/31 Javascript
jQuery实现增删改查
2020/12/22 jQuery
[02:24]DOTA2亚洲邀请赛 NAVI战队出场宣传片
2015/02/07 DOTA
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
2018/03/15 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
2018/06/25 Python
Tensorflow 卷积的梯度反向传播过程
2020/02/10 Python
django迁移文件migrations的实现
2020/03/31 Python
利用matplotlib为图片上添加触发事件进行交互
2020/04/23 Python
Python logging日志库空间不足问题解决
2020/09/14 Python
Django windows使用Apache实现部署流程解析
2020/10/12 Python
Python基于locals返回作用域字典
2020/10/17 Python
俄罗斯Sportmarket体育在线商店:用于旅游和户外活动
2019/11/12 全球购物
会计实习自我鉴定
2013/12/04 职场文书
合同专员岗位职责
2013/12/18 职场文书
群众路线剖析材料
2014/02/02 职场文书
计算机应届毕业生自荐信范文
2014/02/23 职场文书
应届生找工作求职信
2014/06/24 职场文书
乡镇党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
2014年乡镇卫生院工作总结
2014/11/24 职场文书
边城读书笔记
2015/06/29 职场文书
企业安全生产检查制度
2015/08/06 职场文书