np.where 和 np.argwhere的区别

np.wherenp.argwhere 都是NumPy库中用于条件查找的函数,但它们有一些重要的区别:

  1. 返回类型:

    • np.where 返回满足条件的元素的坐标作为元组。如果是多维数组,返回的是两个分别包含满足条件的行坐标和列坐标的数组(或多维坐标)。
    • np.argwhere 返回满足条件的元素的坐标作为多维数组,其中每一行都包含一个坐标。
  2. 返回值的形状:

    • np.where 返回的坐标元组的形状与输入数组的形状相同,只不过每个坐标都是布尔条件下的索引。
    • np.argwhere 返回的多维数组的形状与满足条件的元素数量有关,它的第一维的大小等于满足条件的元素数量。

下面是一个示例来说明它们之间的区别:

import numpy as np

arr = np.array([[1, 2, 3],
                [4, 5, 6],
                [7, 8, 9]])

# 使用 np.where 查找满足条件的元素
indices = np.where(arr > 5)
print("np.where 返回的坐标元组:", indices)

# 使用 np.argwhere 查找满足条件的元素
arg_indices = np.argwhere(arr > 5)
print("np.argwhere 返回的多维坐标数组:", arg_indices)

np.where 和 np.argwhere的区别_第1张图片

在上述示例中,np.where 返回的是一个包含两个数组的元组,分别代表满足条件的元素的行坐标和列坐标。而 np.argwhere 返回的是一个包含坐标的多维数组,其中每行包含一个坐标。

根据你的需求,你可以选择使用其中一个来查找满足条件的元素的坐标。如果你只关心满足条件的元素的位置,np.argwhere 可能更方便,因为它直接返回坐标数组。如果你需要在输入数组的相同形状中标记条件下的元素,那么 np.where 可能更适合。

你可能感兴趣的:(numpy)