栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

遍历scipy.sparse向量(或矩阵)

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

遍历scipy.sparse向量(或矩阵)

编辑:bbtrb的方法(使用coo_matrix)是远远超过我原来的建议更快,使用非零。Sven
Marnach的使用建议

itertools.izip
也提高了速度。目前最快的是
using_tocoo_izip

import scipy.sparseimport randomimport itertoolsdef using_nonzero(x):    rows,cols = x.nonzero()    for row,col in zip(rows,cols):        ((row,col), x[row,col])def using_coo(x):    cx = scipy.sparse.coo_matrix(x)        for i,j,v in zip(cx.row, cx.col, cx.data):        (i,j,v)def using_tocoo(x):    cx = x.tocoo()        for i,j,v in zip(cx.row, cx.col, cx.data):        (i,j,v)def using_tocoo_izip(x):    cx = x.tocoo()        for i,j,v in itertools.izip(cx.row, cx.col, cx.data):        (i,j,v)N=200x = scipy.sparse.lil_matrix( (N,N) )for _ in xrange(N):    x[random.randint(0,N-1),random.randint(0,N-1)]=random.randint(1,100)

产生以下

timeit
结果:

% python -mtimeit -s'import test' 'test.using_tocoo_izip(test.x)'1000 loops, best of 3: 670 usec per loop% python -mtimeit -s'import test' 'test.using_tocoo(test.x)'1000 loops, best of 3: 706 usec per loop% python -mtimeit -s'import test' 'test.using_coo(test.x)'1000 loops, best of 3: 802 usec per loop% python -mtimeit -s'import test' 'test.using_nonzero(test.x)'100 loops, best of 3: 5.25 msec per loop


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

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

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