【问题标题】:excluding element from numpy array从 numpy 数组中排除元素
【发布时间】:2011-12-31 12:57:40
【问题描述】:

我想得到 c 数组作为结果,但我不知道如何:

import numpy as np
a = xrange(10)
b = np.array([3,2,1,9])

c 由 a 中不在 b 中的元素组成:

c = np.array([0,4,5,6,7,8])

【问题讨论】:

  • 什么是np.xrange?你的意思是np.arange?

标签: python arrays numpy elements


【解决方案1】:

也许更直接的解决方案如下:

import numpy as np
a = xrange(10)
b = np.array([3,2,1,9])

c = np.setdiff1d(a,b)

结果:

In [7]: c
Out[7]: array([0, 4, 5, 6, 7, 8])

您可以在文档中找到 numpy 数组的所有类似集合的操作: http://docs.scipy.org/doc/numpy/reference/routines.set.html

【讨论】:

    【解决方案2】:
    import numpy as np
    a = np.arange(10)
    b = np.array([3,2,1,9])
    
    np.array(sorted(set(a) - set(b)))
    # array([0, 4, 5, 6, 7, 8])
    

    更新:也适用于a = xrange(10)。

    【讨论】:

    • 这对于大型数组来说效率很低。 @JoshAdel 的回答是更好的方法。
    • 我只想说,在玩弄了时间之后,@eumiro 的解决方案对于相当广泛的数组大小都非常有效。我建议针对您的特定情况进行基准测试,看看哪个更好,同时注意np.setdiff1d 有一个选项,如果两个数组都只包含唯一值,这可以加快速度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 2019-11-28
    • 1970-01-01
    • 2016-04-27
    相关资源
    最近更新 更多