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

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

如果只提供条件,这个函数是函数np.asarray (condition).nonzero()的简写。尽管直接使用nonzero是更好的选择,因为它对子类的行为是正确的。

语法:

numpy.where(condition[, x, y])

参数:

numpy.where() 函数有以下参数:

condition: array_like, bool

如果这个参数设置为 True,则返回 x,否则返回 y。

x, y: array_like:

这个参数定义了要选择的值。x、y 和 condition 需要能够广播到某个形状。

返回值:

这个函数返回一个数组,其中包含满足条件为 True 时来自 x 的元素,其他情况下来自 y 的元素。

示例 1: np.where()

import numpy as np  
a=np.arange(12)  
b=np.where(a<6,a,5*a)  
b  

在上面的代码中

  • 我们导入了别名为 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: 对于多维数组

import numpy as np  
a=np.arange(12)  
b=np.where([[True, False], [True, True]],[[1, 2], [3, 4]],[[9, 8], [7, 6]])  
b  

输出:

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

示例 3: 广播 x、y 和 condition

import numpy as np  
x, y = np.ogrid[:3, :4]  
a=np.where(x > y, x, 10 + y)  
a  

输出:

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: 广播特定值

x=np.array([[0,1,2],[0,2,5],[0,4,8]])  
y=np.where(x<4,x,-2)  
y  

输出:

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

标签: NumPy, NumPy教程, NumPy学习, NumPy安装, NumPy入门教程, NumPy进阶教程, NumPy指南, NumPy学习指南, NumPy库, NumPy库学习, NumPy库入门, NumPy库教程, NumPy应用, NumPy库进阶