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

根据数组的值求和

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

根据数组的值求和

我们可以使用

np.bincount
据称对这种累积加权计数非常有效的方法,所以这里有一个-

counts = np.bincount(i,v)d[:counts.size] = counts

或者,使用

minlength
输入参数,对于一般情况,当
d
可以是任何数组,而我们想添加到该数组中时,

d += np.bincount(i,v,minlength=d.size).astype(d.dtype, copy=False)

运行时测试

本节将本文中

np.add.at
列出的基础方法
otherpost
与本文
np.bincount
前面列出的基础方法进行比较。

In [61]: def bincount_based(d,i,v):    ...:     counts = np.bincount(i,v)    ...:     d[:counts.size] = counts    ...:     ...: def add_at_based(d,i,v):    ...:     np.add.at(d, i, v)    ...:In [62]: # Inputs (random numbers)    ...: N = 10000    ...: i = np.random.randint(0,1000,(N))    ...: v = np.random.randint(0,1000,(N))    ...:     ...: # Setup output arrays for two approaches    ...: M = 12000    ...: d1 = np.zeros(M)    ...: d2 = np.zeros(M)    ...:In [63]: bincount_based(d1,i,v) # Run approaches    ...: add_at_based(d2,i,v)    ...:In [64]: np.allclose(d1,d2)  # Verify outputsOut[64]: TrueIn [67]: # Setup output arrays for two approaches again for timing    ...: M = 12000    ...: d1 = np.zeros(M)    ...: d2 = np.zeros(M)    ...:In [68]: %timeit add_at_based(d2,i,v)1000 loops, best of 3: 1.83 ms per loopIn [69]: %timeit bincount_based(d1,i,v)10000 loops, best of 3: 52.7 µs per loop


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

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

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