日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

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

發(fā)布時間:2023/12/10 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python技巧(1)--如何转换itertools.chain对象为数组 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

總第 115 篇文章,本文大約 900 字,閱讀大約需要?3 分鐘

之前做1月總結(jié)的時候說過希望每天或者每2天開始的更新一些學(xué)習(xí)筆記,這是開始的第一篇。

這篇介紹的是如何把一個 itertools.chain 對象轉(zhuǎn)換為一個數(shù)組。

參考 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])

對比兩種方法的運(yùn)算時間,如下所示:

>>> 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 方法的運(yùn)算速度會更快。


歡迎關(guān)注我的微信公眾號--算法猿的成長,或者掃描下方的二維碼,大家一起交流,學(xué)習(xí)和進(jìn)步!

如果覺得不錯,在看、轉(zhuǎn)發(fā)就是對小編的一個支持!

總結(jié)

以上是生活随笔為你收集整理的python技巧(1)--如何转换itertools.chain对象为数组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。