【问题标题】:Select rows of numpy.ndarray where the first row number is inside some list选择第一个行号在某个列表中的 numpy.ndarray 行
【发布时间】:2019-04-06 21:14:32
【问题描述】:

我正在寻找一种简短易读的方法来选择 2D numpy.ndarray 的某些行,其中每行的第一个数字在某个列表中。

例子:

>>> index
[4, 8]

>>> data 
array([[ 0,  1,  2,  3],
      [ 4,  5,  6,  7],
      [ 8,  9, 10, 11],
      [12, 13, 14, 15]])

所以在这种情况下我只需要

 array([[ 4,  5,  6,  7],
       [8,  9, 10, 11]])

因为这些行的第一个数字是 4 和 8,它们在 index 中列出。

基本上我在寻找类似的东西:

data[data[:,0] == i if i in index]

这当然是行不通的。

【问题讨论】:

    标签: python numpy indexing


    【解决方案1】:

    如果您想使用列表推导式,以下是方法(不过,isin 无疑更适合这种用例):

    >>> np.array([e for e in data if e[0] in index])
    array([[ 4,  5,  6,  7],
           [ 8,  9, 10, 11]])
    

    【讨论】:

      【解决方案2】:

      您可以使用np.isin 进行检查,然后照常索引:

      idx = [4, 8]
      
      data = np.array([[ 0,  1,  2,  3],
                       [ 4,  5,  6,  7],
                       [ 8,  9, 10, 11],
                       [12, 13, 14, 15]])
      
      >>> data[np.isin(data[:,0], idx)]
      array([[ 4,  5,  6,  7],
             [ 8,  9, 10, 11]])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多