Numpy where() 函数
Numpy where() 函数用于返回输入数组中满足指定条件的元素的索引。此函数还可用于根据条件替换数组中的元素。它对于数组中的条件逻辑运算特别有用。
我们可以根据条件是否满足来广播数组的值。如果条件满足,则返回指定的值;否则,返回另一个值。如果未指定这些值,则返回满足条件的元素的索引。
语法
以下是 Numpy where() 函数的语法 -
numpy.where(condition, [x, y])
参数
以下是 Numpy where() 函数的参数 -
- condition:测试数组中每个元素的条件。它应该是一个布尔表达式。
- x(可选):当条件为 True 时,将返回数组 x 中的值。如果未提供此参数,函数将返回条件中 True 元素的索引。
- y(可选):当条件为 False 时,将返回数组 y 中的值。如果未提供此参数,函数将返回条件中 True 元素的索引。
返回类型
如果仅提供条件参数,则此函数返回满足条件的元素的索引。如果提供了 x 和 y,则返回一个数组,其中包含根据条件从 x 或 y 中选择的元素。
示例
以下是使用 Numpy where() 函数在一维数组中查找满足给定条件的元素索引的基本示例 -
import numpy as np my_array = np.array([10, 20, 30, 40, 50]) print("数组:",my_array) result = np.where(my_array < 30) print("元素小于 30 的索引:", result)
输出
以下是上述代码的输出 -
数组:[10 20 30 40 50] 元素小于 30 的索引:(array([0, 1]),)
示例:根据条件替换值
我们可以使用 where() 函数替换数组中满足条件的元素。
在下面的例子中,我们将大于 3 的元素替换为 0,而不满足条件的元素保持不变 -
import numpy as np my_array = np.array([1, 2, 3, 4, 5]) result = np.where(my_array > 3, 0, my_array) print("替换后的数组:", result)
输出
以下是上述代码的输出 -
替换后的数组:[1 2 3 0 0]
示例:使用多个条件
我们也可以使用 where() 函数来使用多个条件。这里,我们将能被 2 整除的元素替换为 True,将不能被 2 整除的元素替换为 False −
import numpy as np my_array = np.array([56, 79, 83, 96, 12]) result = np.where(my_array%2==0, 'True', 'False') print("多个条件后的数组:", result)
输出
以下是上述代码的输出 −
多个条件后的数组:['True' 'False' 'False' 'True' 'True']
示例:多维数组
where() 函数也可用于多维数组。以下示例中,我们根据条件替换了二维数组中的元素 -
import numpy as np my_array = np.array([[1, 2], [3, 4], [5, 6]]) result = np.where(my_array > 3, 0, my_array) print("替换后的二维数组: ", result)
输出
以下是上述代码的输出 -
替换后的二维数组: [[1 2] [3 0] [0 0]]