python技巧(1)--如何转换itertools.chain对象为数组
生活随笔
收集整理的這篇文章主要介紹了
python技巧(1)--如何转换itertools.chain对象为数组
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
總第 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对象为数组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序员才能看懂,看到第18张终于忍不住笑
- 下一篇: 盘点关于IDEA的几个调试的实用技巧