你可以使用以下方法来过滤NumPy数组中的值。
方法1:基于一个条件的过滤值
#filter for values less than 5
my_array[my_array < 5]
方法2:使用 "OR "条件过滤值
#filter for values less than 5 or greater than 9
my_array[(my_array < 5) | (my_array > 9)]
方法3:使用 "AND "条件过滤值
#filter for values greater than 5 and less than 9
my_array[(my_array > 5) & (my_array < 9)]
方法4:过滤包含在列表中的值
#filter for values that are equal to 2, 3, 5, or 12
my_array[np.in1d(my_array, [2, 3, 5, 12])]
本教程通过以下NumPy数组解释如何在实践中使用每种方法。
import numpy as np
#create NumPy array
my_array = np.array([1, 2, 2, 3, 5, 6, 7, 10, 12, 14])
#view NumPy array
my_array
array([ 1, 2, 2, 3, 5, 6, 7, 10, 12, 14])
例1:基于一个条件的过滤值
下面的代码显示了如何根据一个条件过滤NumPy数组中的值。
#filter for values less than 5
my_array[(my_array < 5)]
array([1, 2, 2, 3])
#filter for values greater than 5
my_array[(my_array > 5)]
array([ 6, 7, 10, 12, 14])
#filter for values equal to 5
my_array[(my_array == 5)]
array([5])
例2:使用 "OR "条件过滤数值
下面的代码展示了如何使用 "OR "条件来过滤NumPy数组中的值。
#filter for values less than 5 or greater than 9
my_array[(my_array < 5) | (my_array > 9)]
array([ 1, 2, 2, 3, 10, 12, 14])
这个过滤器返回NumPy数组中小于5或大于9的值。
例3:使用 "AND "条件过滤行
下面的代码显示了如何使用 "AND "条件来过滤NumPy数组中的数值。
#filter for values greater than 5 and less than 9
my_array[(my_array > 5) & (my_array < 9)]
array([6, 7])
这个过滤器返回NumPy数组中大于5和 小于9的值。
例4:过滤包含在列表中的值
下面的代码显示了如何过滤NumPy数组中包含在一个列表中的值。
#filter for values that are equal to 2, 3, 5, or 12
my_array[np.in1d(my_array, [2, 3, 5, 12])]
array([ 2, 2, 3, 5, 12])
这个过滤器只返回等于2、3、5或12的值。
注意:你可以在这里找到NumPy**in1d()**函数的完整文档。
其他资源
下面的教程解释了如何在Python中执行其他常见的过滤操作。
如何过滤包含特定字符串的Pandas DataFrame行
如何根据多个条件过滤Pandas DataFrame
如何在Pandas DataFrame中使用 "NOT IN "过滤器