Numpy 删除所有以零开头的行

Numpy delete all rows that start with zero

我有 2D Numpy 数组,我想删除所有以特定值开头的行,比如 (0),然后将所有以其他值开头的行,比如 (10) 保留到新数组中

a1 = np.array([[ 0,  1,  2,  3,  4],
   [ 5,  6,  0,  8,  0],
   [10, 11, 12, 13, 14],
   [ 0, 16, 17, 18, 19],
   [20, 21, 22,  0, 24]])

第一步之后

a2 = ([[ 5,  6,  0,  8,  0],
      [10, 11, 12, 13, 14],
      [20, 21, 22,  0, 24]])

最后一步

a3 = ([[10, 11, 12, 13, 14]])

您可以使用以下掩码实现此目的:

mask = (a1[:, 0] != 0)
a2 = a1[mask, :]

mask2 = (a2[:, 0] == 10)
a3 = a2[mask2, :]

您可以使用 np.logical_not 方法为要删除的行创建条件。

'''

a2 = a1[np.logical_not(a1[:, 0] == 0)]
a3 = a2[np.logical_not(a2[:, 0] != 10)]

'''