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

快速替换numpy数组中的值

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

快速替换numpy数组中的值

我相信还有更有效的方法,但是现在尝试

from numpy import copynewArray = copy(theArray)for k, v in d.iteritems(): newArray[theArray==k] = v

微基准测试和正确性测试:

#!/usr/bin/env python2.7from numpy import copy, random, arangerandom.seed(0)data = random.randint(30, size=10**5)d = {4: 0, 9: 5, 14: 10, 19: 15, 20: 0, 21: 1, 22: 2, 23: 3, 24: 0}dk = d.keys()dv = d.values()def f1(a, d):    b = copy(a)    for k, v in d.iteritems():        b[a==k] = v    return bdef f2(a, d):    for i in xrange(len(a)):        a[i] = d.get(a[i], a[i])    return adef f3(a, dk, dv):    mp = arange(0, max(a)+1)    mp[dk] = dv    return mp[a]a = copy(data)res = f2(a, d)assert (f1(data, d) == res).all()assert (f3(data, dk, dv) == res).all()

结果:

$ python2.7 -m timeit -s 'from w import f1,f3,data,d,dk,dv' 'f1(data,d)'100 loops, best of 3: 6.15 msec per loop$ python2.7 -m timeit -s 'from w import f1,f3,data,d,dk,dv' 'f3(data,dk,dv)'100 loops, best of 3: 19.6 msec per loop


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

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

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