多个条件使用Numpy where函数
参考:Numpy where function with multiple conditions
在Numpy中,我们经常需要根据多个条件来选择数组中的元素。np.where()
函数可以帮助我们根据条件返回符合条件的元素的索引或值。
基础使用语法
Numpy 中 where
函数的语法如下:
numpy.where(condition, x, y)
condition
: 在数组上应用的条件。x
: 如果条件为 True,则使用此值。y
: 如果条件为 False,则使用此值。
基础使用示例
假设我们有一个Numpy数组arr
,我们想要根据两个条件选择数组中的元素:大于0并且小于10。我们可以使用以下代码来实现:
import numpy as np
arr = np.array([1, 5, -3, 8, 11, 0, -2])
# 使用np.where()函数,传入两个条件表达式
result = np.where((arr > 0) & (arr < 10))
print(result)
运行以上代码,我们会得到如下结果:
这表示索引为0, 1, 3的元素满足条件(大于0并且小于10)。
除了返回符合条件的元素的索引外,np.where()
函数还可以返回符合条件的元素的值。我们可以使用如下代码来实现:
import numpy as np
arr = np.array([1, 5, -3, 8, 11, 0, -2])
result_values = arr[np.where((arr > 0) & (arr < 10))]
print(result_values)
运行以上代码,我们会得到如下结果:
这表示数组中大于0并且小于10的元素的值分别为1、5和8。
总而言之,np.where()
函数可以帮助我们根据多个条件选择数组中的元素的索引或值,非常方便实用。
示例1
数组元素根据两个条件:arr > 2 且 arr < 5
,根据两个条件来限定输出数组。示例代码如下:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
result = np.where((arr > 2) & (arr < 5), arr, 0)
print(result)
运行结果:
示例2
依据条件:满足大于70并且可以被10整除条件的元素置为0,示例代码如下:
import numpy as np
arr = np.array([50, 60, 70, 80, 90, 100])
result = np.where((arr > 70) & (arr % 10 == 0), arr, 0)
print(result)
运行结果: