如何用NumPy删除只包含0的数组行

  • Post category:Python

为了说明如何在NumPy中删除只包含0的数组行,我们首先需要创建一个NumPy数组。我们可以使用以下代码创建一个包含一些0的数组:

import numpy as np

# 创建一个包含一些0的数组
arr = np.array([[0, 1, 0], [0, 0, 0], [1, 0, 0], [0, 0, 1]])

这将创建一个形状为 (4, 3) 的数组。现在,让我们看看如何使用NumPy删除只包含0的数组行。

方法1:使用布尔索引

我们可以使用布尔索引来找到数组中只包含0的行。具体来说,我们可以使用以下代码来创建一个布尔数组:

# 找到只包含0的行
mask = (arr == 0).all(axis=1)

这将创建一个形状为 (4,) 的布尔数组,其中 True 表示该行只包含0,而 False 表示该行包含非0元素。

现在,我们可以使用以下代码从数组中删除只包含0的行:

# 删除只包含0的行
arr = arr[~mask]

这将从数组中删除只包含0的行,并将结果赋值给 arr

方法2:使用any()

除了使用布尔索引之外,我们还可以使用 any() 函数来找到数组中只包含0的行。具体来说,我们可以使用以下代码来创建一个布尔数组:

# 找到只包含0的行
mask = (arr == 0).any(axis=1)

这将创建一个形状为 (4,) 的布尔数组,其中 True 表示该行只包含0,而 False 表示该行包含非0元素。

现在,我们可以使用以下代码从数组中删除只包含0的行:

# 删除只包含0的行
arr = arr[~mask]

这将从数组中删除只包含0的行,并将结果赋值给 arr

完整代码如下所示:

import numpy as np

# 创建一个包含一些0的数组
arr = np.array([[0, 1, 0], [0, 0, 0], [1, 0, 0], [0, 0, 1]])

# 找到只包含0的行
mask = (arr == 0).all(axis=1)

# 删除只包含0的行
arr = arr[~mask]

print(arr)

输出结果为:

[[0 1 0]
 [0 0 1]]