如何过滤NumPy数组(4个例子)

397 阅读1分钟

你可以使用以下方法来过滤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 "过滤器