【问题标题】:Filtering out rows in multidimensional numpy arrays过滤掉多维numpy数组中的行
【发布时间】:2021-07-04 21:20:15
【问题描述】:

假设我有一个这样的数组:

array([[ 1,  2],
       [-1, -2],
       [ 0,  0],
       [-1,  2],
       [ 2, -1]])

我想过滤掉所有包含负数的行。

而且,希望得到这个:

array([[ 1,  2],
       [ 0,  0]])

到目前为止我已经试过了:

>>> print(a[a>=0].reshape(3,2))
array([[1, 2],
       [0, 0],
       [2, 2]])

但正如您所见,我得到了一维数组,并且得到了不需要的行(在本例中为 [2, 2]

如何在不使用任何 for 循环的情况下做到这一点?提前致谢。

【问题讨论】:

    标签: python arrays numpy numpy-ndarray


    【解决方案1】:

    您可以使用np.all 来检查一行中的所有值是否满足条件。

    import numpy as np 
    
    a = np.array([[ 1,  2],
                  [-1, -2],
                  [ 0,  0],
                  [-1,  2],
                  [ 2, -1]])
    
    a[np.all(a >= 0, axis=1)]
    # returns:
    array([[1, 2],
           [0, 0]])
    

    【讨论】:

      猜你喜欢
      • 2018-03-14
      • 1970-01-01
      • 2021-08-18
      • 1970-01-01
      • 2021-08-28
      • 1970-01-01
      • 2012-06-10
      • 2022-01-21
      • 2014-11-27
      相关资源
      最近更新 更多