【问题标题】:better way to use index array to get elements?使用索引数组获取元素的更好方法?
【发布时间】:2012-01-05 11:07:12
【问题描述】:

我想使用像这样的索引数组来获取numpy 数组的元素

import numpy 
a = numpy.arange(6)
ind = [2,3]

现在,a[ind] 给了我第三和第四个元素,但我实际上想要a 的所有 other 元素。 有没有一种单行/优雅的方式来做到这一点?

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    我知道没有一种直接的方法可以得到一组整数索引的补码。布尔索引否定很容易,它可以让你做这样的事情:

    In [100]: a=np.arange(6)
    
    In [101]: ind=[2,3]
    
    In [102]: cind=(a==a)
    
    In [103]: cind[ind]=False
    
    In [104]: a[cind]
    Out[104]: array([0, 1, 4, 5])
    

    但这不是单线解决方案。

    【讨论】:

    • 你可以用np.ones(a.shape, 'bool')代替(a==a)
    【解决方案2】:

    可能是这样的:

    import numpy  
    a = numpy.arange(6) 
    ind = [1,3]
    for x in range(6):
     if x not in ind: print a[x]
    

    【讨论】:

      【解决方案3】:

      这之前已经在这里提出过,但这是一个列表理解,因此是一个单行:

      numpy.array([a[i] for i in range(len(a)) if i not in ind])
      

      结果

      array([0, 1, 4, 5])
      

      【讨论】:

        猜你喜欢
        • 2019-08-06
        • 1970-01-01
        • 2019-05-17
        • 1970-01-01
        • 2014-12-15
        • 1970-01-01
        • 2021-11-24
        • 2011-09-08
        • 1970-01-01
        相关资源
        最近更新 更多