从numpy数组中提取所需行

从numpy数组中提取所需行,numpy,Numpy,我有一个给定的numpy数组,如下所示 import numpy as np data = np.array([[4,6,8,9,3,2,4,4,1], # no of 0s == 0 [4,6,8,9,3,0,0,4,0], # no of 0s == 3 [4,6,0,9,0,2,0,4,0], # no of 0s == 4 [4,6,8,0,3,0,0,0,0], # no of

我有一个给定的numpy数组,如下所示

import numpy as np

data = np.array([[4,6,8,9,3,2,4,4,1], # no of 0s == 0
                  [4,6,8,9,3,0,0,4,0], # no of 0s == 3
                  [4,6,0,9,0,2,0,4,0], # no of 0s == 4
                  [4,6,8,0,3,0,0,0,0], # no of 0s == 5
                  [4,6,8,9,3,2,0,4,0]]) # no of 0s == 2
从给定的数组data中,我必须提取至少包含0的3行。 因此,预期的是第1行、最后一行和第二行

res = np.array([[4,6,8,9,3,2,4,4,1], # no of 0s == 0
                      [4,6,8,9,3,0,0,4,0], # no of 0s == 3                      
                      [4,6,8,9,3,2,0,4,0]]) # no of 0s == 2

伙计们,我该怎么做呢?

根据您的条件和分区求和

n = 3
c = (data == 0).sum(1)
mn = np.argpartition(c, n)[:n]
data[mn]

如果需要按原始索引值而不是按零数排序的行,请将最后一行替换为:

data[np.sort(mn)]
data[np.sort(mn)]