📅  最后修改于: 2020-10-27 08:06:01             🧑  作者: Mango
NumPy模块提供了一个numpy.where()函数,用于根据条件选择元素。它返回根据条件从a或b中选择的元素。
例如,如果所有参数-> condition,则将a&b传递给numpy.where(),则它将根据条件产生的布尔数组中的值返回从a&b中选择的元素。
如果仅提供条件,则此函数是函数np.asarray(condition).nonzero()的缩写。尽管应直接首选非零值,因为它对于子类的行为正确。
numpy.where(condition[, x, y])
这些是numpy.where()函数中的以下参数:
条件:类数组,布尔
如果此参数设置为True,则产生x,否则产生y。
x,y:array_like:
此参数定义从中选择的值。 x,y和条件需要广播为某种形状。
此函数返回条件为True的x元素和其他地方y元素的数组。
import numpy as np
a=np.arange(12)
b=np.where(a<6,a,5*a)
b
在上面的代码中
在输出中,范围从0到5的值与条件保持相同,其他值已乘以5。
输出:
array([ 0, 1, 2, 3, 4, 5, 30, 35, 40, 45, 50, 55])
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]])
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]])
在上面的代码中
在输出中,如果满足条件,则将x值与y值进行比较,然后将其输出x值,否则将printy值,该值已作为where()函数的参数传递。
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]])