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

结合两个数组并排序

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

结合两个数组并排序

由于您使用numpy,因此我怀疑bisec根本不会对您有所帮助。因此,我建议您做两件事:

  1. 千万 不能 使用
    np.sort
    ,使用
    c.sort()
    方法,而不是这种种取代阵列,避免了复制。
  2. np.unique
    必须使用
    np.sort
    没有到位的。因此,
    np.unique
    不要手动使用逻辑。IE浏览器 首先进行排序(就地),然后
    np.unique
    手动执行方法(还检查其python代码),并
    flag = np.concatenate(([True], ar[1:] != ar[:-1]))
    与之一起使用
    unique = ar[flag]
    (对ar进行排序)。为了更好一点,您可能应该使标志操作本身就位。
    flag = np.ones(len(ar), dtype=bool)
    然后
    np.not_equal(ar[1:], ar[:-1], out=flag[1:])
    基本上避免了的完整副本
    flag
  3. 我对此不确定。但是
    .sort
    有3种不同的算法,因为您的数组可能已经差不多排序了,所以更改排序方法可能会产生速度差异。

这将使完整的东西接近您所得到的(无需事先进行独特的处理):

def insort(a, b, kind='mergesort'):    # took mergesort as it seemed a tiny bit faster for my sorted large array try.    c = np.concatenate((a, b)) # we still need to do this unfortunatly.    c.sort(kind=kind)    flag = np.ones(len(c), dtype=bool)    np.not_equal(c[1:], c[:-1], out=flag[1:])    return c[flag]


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

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

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