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正则表达式 re模块使用说明
May 19 Python
详解Python中with语句的用法
Apr 15 Python
python利用Guetzli批量压缩图片
Mar 23 Python
Python编程之字符串模板(Template)用法实例分析
Jul 22 Python
Python实现矩阵转置的方法分析
Nov 24 Python
在Django admin中编辑ManyToManyField的实现方法
Aug 09 Python
Python django搭建layui提交表单,表格,图标的实例
Nov 18 Python
python 比较2张图片的相似度的方法示例
Dec 18 Python
python实现飞船大战
Apr 24 Python
聊聊python中的循环遍历
Sep 07 Python
python import 上级目录的导入
Nov 03 Python
python里反向传播算法详解
Nov 22 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
深入理解:XML与对象的序列化与反序列化
2013/06/08 PHP
PHP has encountered a Stack overflow问题解决方法
2014/11/03 PHP
PHP实现的一致性哈希算法完整实例
2015/11/14 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
2015/12/31 PHP
php批量删除操作(数据访问)
2017/05/23 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
解决php写入数据库乱码的问题
2019/09/17 PHP
Js之软键盘实现(js源码)
2007/01/30 Javascript
onkeydown事件解决按回车键直接提交数据的需求
2013/04/11 Javascript
Javascript基础知识(二)事件
2014/09/29 Javascript
深入探讨javascript函数式编程
2015/10/11 Javascript
JS实现的网页背景闪电闪烁效果代码
2015/10/17 Javascript
window.location.reload 刷新使用分析(去对话框)
2015/11/11 Javascript
jQuery如何获取动态添加的元素
2016/06/24 Javascript
JS中的函数与对象的创建方式
2019/05/12 Javascript
vue实现计步器功能
2019/11/01 Javascript
[55:03]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.20
2020/11/20 DOTA
Python 解决中文写入Excel时抛异常的问题
2018/05/03 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
2018/10/22 Python
对Python中画图时候的线类型详解
2019/07/07 Python
为什么从Python 3.6开始字典有序并效率更高
2019/07/15 Python
python实现几种归一化方法(Normalization Method)
2019/07/31 Python
Python手绘可视化工具cutecharts使用实例
2019/12/05 Python
Python中使用socks5设置全局代理的方法示例
2020/04/15 Python
django 解决自定义序列化返回处理数据为null的问题
2020/05/20 Python
CSS3圆角边框和边界图片效果实例
2016/07/01 HTML / CSS
用html5实现语音搜索框的方法
2014/03/18 HTML / CSS
Anya Hindmarch官网:奢侈设计师手袋及配饰
2018/11/15 全球购物
通往英国高街的商店橱窗:Down Your High Street
2020/07/19 全球购物
化学实验员岗位职责
2013/12/28 职场文书
毕业生自荐信如何写
2014/03/24 职场文书
教师爱岗敬业演讲稿
2014/05/05 职场文书
2014年校长工作总结
2014/12/11 职场文书
任命书怎么写
2015/03/02 职场文书
用Python进行栅格数据的分区统计和批量提取
2021/05/27 Python
Oracle11g R2 安装教程完整版
2021/06/04 Oracle