Python 中的 numpy.where()

2024 年 8 月 29 日 | 阅读 2 分钟

NumPy 模块提供了一个函数 numpy.where(),用于根据条件选择元素。它根据条件返回从 a 或 b 中选择的元素。

例如,如果所有参数 -> condition, a & b 都传递给 numpy.where(),那么它将根据条件产生的布尔数组中的值返回从 a & b 中选择的元素。

如果仅提供条件,则此函数是函数 np.asarray(condition).nonzero() 的简写。虽然应该直接首选 nonzero,因为它对子类表现正确。

语法

参数

以下是 numpy.where() 函数中的参数

condition:array_like,bool

如果此参数设置为 True,则产生 x,否则产生 y。

x, y:array_like

此参数定义要从中选择的值。x、y 和 condition 需要可广播到某个形状。

返回值

此函数返回一个数组,其中包含 condition 为 True 的 x 中的元素和 condition 为 False 的 y 中的元素。

示例 1:np.where()

在上面的代码中

  • 我们使用别名 np 导入了 numpy。
  • 我们使用 np.arange() 函数创建了一个数组“a”。
  • 我们声明了变量“b”并分配了 np.where() 函数的返回值。
  • 我们在函数中传递了数组“a”。
  • 最后,我们尝试打印 b 的值。

在输出中,0 到 5 范围内的值保持不变,其他值已乘以 5。

输出

array([ 0,  1,  2,  3,  4,  5, 30, 35, 40, 45, 50, 55])

示例 2:对于多维数组

输出

array([[1, 8],
       	[3, 4]])

示例 3:广播 x、y 和条件

输出

array([[10, 11, 12, 13],
       	[ 1, 11, 12, 13],
       	[ 2,  2, 12, 13]])

在上面的代码中

  • 我们使用别名 np 导入了 numpy。
  • 我们使用 np.arange() 函数创建了一个数组“a”。
  • 我们声明了变量“b”并分配了 np.where() 函数的返回值。
  • 我们传递了一个多维布尔数组作为条件,并传递了 x 和 y 作为整数数组。
  • 最后,我们尝试打印 b 的值。

在输出中,如果 x 值满足条件,则将其与 y 值进行比较,然后将打印 x 值,否则将打印作为 where() 函数参数传递的 y 值。

示例 4:广播特定值

输出

array([[ 0,  1,  2],
       [ 0,  2, -2],
       [ 0, -2, -2]])

下一主题numpy.argsort()