Numpy:如何获取值为 true 的索引


您可以使用以下方法来获取 NumPy 中条件为真的索引:

方法 1:获取 NumPy 数组中条件为 true 的索引

 #get indices of values greater than 10
n.p. asarray (my_array> 10 ). nonzero ()

方法 2:获取 NumPy 矩阵中条件为 true 的索引

 #get indices of values greater than 10
n.p. transpose ((my_matrix>10) .nonzero ())

方法 3:获取 NumPy 矩阵任意行中条件为 true 的索引

 #get indices of rows where any value is greater than 10
n.p. asarray ( np.any (my_matrix> 10 ,axis= 1 )). nonzero ()

以下示例展示了如何在实践中使用每种方法。

示例 1:获取 NumPy 数组中条件为 true 的索引

以下代码显示如何获取 NumPy 数组中值大于 10 的所有索引:

 import numpy as np

#create NumPy array
my_array = np. array ([2, 2, 4, 5, 7, 9, 11, 12, 3, 19])

#get index of values greater than 10
n.p. asarray (my_array> 10 ). nonzero ()

(array([6, 7, 9], dtype=int32),)

从结果中我们可以看到,原始NumPy数组的索引位置6、79处的值均大于10。

示例 2:获取 NumPy 矩阵中条件为 true 的索引

以下代码显示如何获取 NumPy 矩阵中值大于 10 的所有索引:

 import numpy as np

#create NumPy matrix
my_matrix = np. array ([[2, 5, 9, 12],
                     [6, 7, 8, 8],
                     [2, 5, 7, 8],
                     [4, 1, 15, 11]])

#get index of values greater than 10
n.p. transpose ((my_matrix> 10 ) .nonzero ())

array([[0, 3],
       [3, 2],
       [3, 3]], dtype=int32)

从结果中我们可以看到矩阵的以下索引位置的值均大于10:

  • [0, 3]
  • [3, 2]
  • [3, 3]

示例 3:获取 NumPy 矩阵任意行中条件为 true 的索引

以下代码显示如何获取 NumPy 矩阵中的所有行索引,其中行中任何元素的值大于 10:

 import numpy as np

#create NumPy matrix
my_matrix = np. array ([[2, 5, 9, 12],
                     [6, 7, 8, 8],
                     [2, 5, 7, 8],
                     [4, 1, 15, 11]])

#get index of rows where any value is greater than 10
n.p. asarray ( np.any (my_matrix> 10 , axis= 1 )). nonzero ()

(array([0, 3], dtype=int32),)

从结果中我们可以看到第0行和第3行至少有一个值大于10。

注意:要获取列中条件为真的索引,请改用axis=0

其他资源

以下教程解释了如何在 NumPy 中执行其他常见任务:

如何用值填充 NumPy 数组
如何从 NumPy 数组中删除特定元素
如何替换 NumPy 数组中的元素
如何从 NumPy 数组中获取特定行

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注