栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

“Python将多维数组转换为一维“不同方法的性能测试

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

“Python将多维数组转换为一维“不同方法的性能测试

有大量的二维数组转换为一维的任务,如下的写法非常的low,性能堪忧。

data = []
for a in alist:
    data = data+a
    

网上搜寻一些方案,但文中未给出性能评测,所以想着做一下测试笔记。省流结论

itertools 最快
from itertools import chain
mulArrays = [[1,2,3],[4,5,6],[7,8,9]]
print(list(chain.from_iterable(mulArrays))) #[1, 2, 3, 4, 5, 6, 7, 8, 9]

测试数据如下

%time
import numpy as np
def test_list(n):
    return [[i,0]     for i in np.arange(n)]
alist = [ test_list(200) for i in np.arange(4000)]

验证方法1 for

%%time
data =[]
for a in alist:
    data = data+a
# CPU times: user 18.1 s, sys: 0 ns, total: 18.1 s
# Wall time: 18.1 s

验证方法2  列表推导式

%%time
b = [  i   for a in alist   for i in a]
CPU times: user 28.2 ms, sys: 4.06 ms, total: 32.2 ms
Wall time: 31.1 ms

验证方法3

%%time
import operator
from functools import reduce
mulArrays = alist
bc = reduce(operator.add, mulArrays)
len(bc)
CPU times: user 22.5 s, sys: 599 ms, total: 23.1 s
Wall time: 22.1 s

验证方法4

%%time
from itertools import chain
mulArrays =alist
dc = (list(chain.from_iterable(mulArrays)))
CPU times: user 16.6 ms, sys: 10 µs, total: 16.7 ms
Wall time: 16.4 ms

验证方法5

%%time
mulArrays = alist

mc = sum(mulArrays,[]) 
CPU times: user 22.3 s, sys: 476 ms, total: 22.8 s
Wall time: 21.8 s

结论:

方法耗费时间
sum22.8 s
itertool,chain16.7ms
operator.add23.1s
for 18.1s
列表推导式32.2ms

参考文章

Python将多维数组转换为一维_Sunshine_502的博客-CSDN博客_python多维数组转化为一维数组

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/969415.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号