总第 115 篇文章,本文大约 900 字,阅读大约需要 3 分钟

之前做1月总结的时候说过希望每天或者每2天开始的更新一些学习笔记,这是开始的第一篇。

这篇介绍的是如何把一个 itertools.chain 对象转换为一个数组。

参考 stackoverflow 上的一个回答:Get an array back from an itertools.chain object,链接如下:

https://stackoverflow.com/questions/26853860/get-an-array-back-from-an-itertools-chain-object

例子:

list_of_numbers = [[1, 2], [3], []]
import itertools
chain = itertools.chain(*list_of_numbers)

解决方法有两种:

第一种比较简单,直接采用 list 方法,如下所示:

list(chain)

但缺点有两个:

  • 会在外层多嵌套一个列表

  • 效率并不高

第二个就是利用 numpy 库的方法 np.fromiter,示例如下:

>>> import numpy as np
>>> from itertools import chain
>>> list_of_numbers = [[1, 2], [3], []]
>>> np.fromiter(chain(*list_of_numbers), dtype=int)
array([1, 2, 3])

对比两种方法的运算时间,如下所示:

>>> list_of_numbers = [[1, 2]*1000, [3]*1000, []]*1000
>>> %timeit np.fromiter(chain(*list_of_numbers), dtype=int)
10 loops, best of 3: 103 ms per loop
>>> %timeit np.array(list(chain(*list_of_numbers)))
1 loops, best of 3: 199 ms per loop

可以看到采用 numpy 方法的运算速度会更快。


欢迎关注我的微信公众号--算法猿的成长,或者扫描下方的二维码,大家一起交流,学习和进步!

如果觉得不错,在看、转发就是对小编的一个支持!

python技巧(1)--如何转换itertools.chain对象为数组相关推荐

  1. Python技巧——根据函数名获得函数对象

    有时我们需要将一个文件的信息(类.函数及变量)保存到文件,我们不能直接保存函数对象,而是将其转化为fn.__name__,问题来了,当我们想通过读取文件的形式重新配置这些类.函数时,该如何把这些字符串 ...

  2. python生成json_生成动态嵌套JSON对象和数组-python - python

    正如问题所解释的那样,我一直在尝试生成嵌套的JSON对象.在这种情况下,我有for循环从字典dic中获取数据.下面是代码: f = open("test_json.txt", 'w ...

  3. Python Itertools.chain()用法【将一组迭代对象串联起来,形成一个更大的迭代器】

    它是一个需要一系列可迭代对象并返回一个可迭代对象的函数.它将所有可迭代对象组合在一起,并生成一个可迭代对象作为输出. 场景一:  chain()可以把一组迭代对象串联起来,形成一个更大的迭代器: &g ...

  4. python itertools模块chain函数功能详解 itertools.chain(*iterable)

    Itertools模块, itertools提供了高效快捷的用于操作迭代对象的函数.通过使用这个模块,可以简化代码. Itertools.chain语法 Itertools.chain(*iterab ...

  5. Python——itertools.chain.from_iterable将多个迭代器连接成一个统一的迭代器的最高效的方法

    1 致谢 感谢网友"-柚子皮-"的帮助, 原文链接如下: https://blog.csdn.net/pipisorry/article/details/45171451 感谢 P ...

  6. 弄懂这56个Python技巧,秒变Python大神

    1. 枚举 - enumerate 可以有参数哦 之前我们这样操作: i = 0for item in iterable: print i, item i += 1 现在我们这样操作: for i, ...

  7. 程序员必知的20个Python技巧

    作者 | Duomly 译者 | 弯月,编辑 | 郭芮 出品 | CSDN(ID:CSDNnews) Python是一门流行且应用广泛的通用编程语言,其应用包括数据科学.机器学习.科学计算等领域,以及 ...

  8. 程序员必知的 20 个 Python 技巧!

    本文将向你展示20条非常实用的Python使用技巧. 作者 | Duomly 译者 | 弯月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: Python是一门流行且应用广 ...

  9. 30个必会python技巧

    直接交换2个数字的位置 Python 提供了一种直观的方式在一行代码中赋值和交换(变量值).如下所示: x, y = 10, 20 print(x, y) x, y = y, x print(x, y ...

最新文章

  1. php table字段排序,jQuery如何对table进行排序操作的示例详解
  2. 亿级数据湖统一存储技术实践
  3. redis详解(四)-- 高可用分布式集群
  4. Redis 系列之一
  5. JPA 一对一设置无效,连表查询的时候另外一个实体类的对象值为空
  6. HDFS的简介及基本操作(常用的命令参数介绍)
  7. 计算机专业英语的理解,计算机专业英语之理解网络地址
  8. excel如何输入毫秒级时间
  9. 英语计算机职称考试查询成绩,北京职称外语计算机成绩长期有效
  10. Web 开发中使用了 Vim 作为主编辑器之后......
  11. sourcetree 忽略目录_SourceTree安装与使用方法
  12. springboot整合junit_springBoot整合junit(笔记)
  13. Thinkpad常见问题大全(转载联想工程师博客)
  14. 该网站安全证书有问题 宝塔面板配置ssl中遇到的“坑”
  15. MySQL 中的boolean/bool/tinyint(1)表示布尔类型
  16. 小米10 MIUI11 安卓10安装面具获取root权限
  17. Ubuntu下ping命令提示域名解析失败以及无法打开网页
  18. Python 自动化办公-玩转 Word
  19. 本周大新闻|FDA公布XR认证医疗名单,索尼推数字孪生平台Mapray
  20. 关于电脑出现 “USB Serial Port“ 黄色感叹号

热门文章

  1. asp.net Linux 界面,在 ASP.NET 中实现不同角色的用户使用不同登录界面的方法
  2. 深度ip转换器手机版app_房串串经纪人版app下载-房串串经纪人版app手机版 v1.0.0...
  3. 计算机如何查找目标,如何使用命令行查找计算机地理位置? | MOS86
  4. js中 json详解
  5. 使用composer下载依赖包下载失败的解决方法
  6. 判断一个数的二进制形式是否只有一个1,是的话就输出
  7. uni-app自定义tabBar;uni-app小程序自定义tabBar;uni-app小程序修改中间tabBar导航栏大小;uni-app中间导航栏凸起;uni-app修改底部导航栏
  8. Taro+react开发(88):大写px 控制样式
  9. 前端学习(3219):...扩展
  10. 23为什么要帮助他人