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

在numpy数组中查找连续的重复nan

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

在numpy数组中查找连续的重复nan

这是一种方法-

def max_repeatedNaNs(a):    # Mask of NaNs    mask = np.concatenate(([False],np.isnan(a),[False]))    if ~mask.any():        return 0    else:        # Count of NaNs in each NaN group. Then, get max count as o/p.        c = np.flatnonzero(mask[1:] < mask[:-1]) -  np.flatnonzero(mask[1:] > mask[:-1])        return c.max()

这是一个改进的版本-

def max_repeatedNaNs_v2(a):    mask = np.concatenate(([False],np.isnan(a),[False]))    if ~mask.any():        return 0    else:        idx = np.nonzero(mask[1:] != mask[:-1])[0]        return (idx[1::2] - idx[::2]).max()

基准测试

@pltrdy's comment
-

In [77]: a = np.random.rand(10000)In [78]: a[np.random.choice(range(len(a)),size=1000,replace=0)] = np.nanIn [79]: %timeit contiguous_NaN(a) #@pltrdy's solution100 loops, best of 3: 15.8 ms per loopIn [80]: %timeit max_repeatedNaNs(a)10000 loops, best of 3: 103 µs per loopIn [81]: %timeit max_repeatedNaNs_v2(a)10000 loops, best of 3: 86.4 µs per loop


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

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

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