NumPy 通过多个条件过滤行数

NumPy 通过多个条件过滤行数

在这篇文章中,我们将讨论如何通过多个条件过滤NumPy数组的行。在进入多条件过滤行之前,让我们先看看如何基于一个条件来应用过滤器。基本上有两种方法可以做到这一点。

方法1:使用掩码矩阵

mask函数从数组arr中过滤出位于mask数组中false索引处的数字。开发者可以根据自己的要求设置掩码数组–当形成一个过滤逻辑很困难时,它就变得非常有用。

步骤

  • Import module
  • 制作初始阵列
  • Define mask
  • 根据掩码制作一个新的数组
  • 打印新的数组

代码:

# importing numpy lib
import numpy as np
 
# making a numpy array
arr = np.array([x for x in range(11, 20)])
 
print("Original array")
print(arr)
 
# defining mask
mask = [True, False, True, False, True, True, False, False, False]
 
# making new array on conditions
new_arr = arr[mask]
 
print("New array")
print(new_arr)

输出

Original array
[11 12 13 14 15 16 17 18 19]
New array
[11 13 15 16]

方法2:使用迭代法

开发者没有使用掩码,而是迭代了数组arr,并在每个数组元素上应用条件。

步骤

  • Import module
  • Create array
  • 创建一个空数组
  • 遍历数组
  • 根据某些条件选择项目
  • 将选定的项目添加到空数组中
  • Display array

代码:

# importing numpy lib
import numpy as np
 
# making a numpy array
arr = np.array([x for x in range(11, 20)])
 
print("Original array")
print(arr)
 
# making a blank list
new_arr = []
 
for x in arr:
  # applying condition: appending even numbers
    if x % 2 == 0:
        new_arr.append(x)
 
# Converting new list into numpy array
new_arr = np.array(new_arr)
print("New array")
print(new_arr)

输出

Original array 

[11 12 13 14 15 16 17 18 19] 

New array 

[12 14 16 18] 

现在让我们尝试在NumPy数组上应用多个条件

方法1:使用Mask

步骤

  • Import module
  • 创建初始阵列
  • 根据多种条件定义掩码
  • 根据掩码向新数组添加数值
  • Display array

示例

# importing numpy lib
import numpy as np
 
# making a numpy array
arr = np.array([x for x in range(11, 40)])
 
print("Original array")
print(arr)
 
# defining mask based on two conditions:
# array element must be greater than 15
# and must be a divisible by 2
mask = (arr > 15) & (arr % 2 == 0)
 
# making new array on conditions
new_arr = arr[mask]
print("New array")
print(new_arr)

输出

Original array 

[11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 

35 36 37 38 39] 

New array 

[16 18 20 22 24 26 28 30 32 34 36 38] 

方法2:迭代法

步骤

  • Import module
  • 创建初始阵列
  • 创建一个空数组
  • 遍历数组
  • 根据多个条件选择项目
  • 将选定的项目添加到空列表中
  • Display array

示例

# importing numpy lib
import numpy as np
 
# making a numpy array
arr = np.array([x for x in range(11, 40)])
 
print("Original array")
print(arr)
 
# making a blank list
new_arr = []
 
for x in arr:
    # applying two conditions: number is divisible by 2 and is greater than 15
    if x % 2 == 0 and x > 15:
        new_arr.append(x)
 
# Converting new list into numpy array
new_arr = np.array(new_arr)
print("New array")
print(new_arr)

输出

Original array

[11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

35 36 37 38 39]

New array

[16 18 20 22 24 26 28 30 32 34 36 38]

方法3:使用lambda

步骤

  • Import module
  • 创建初始阵列
  • 使用lambda函数应用多个条件
  • 选择相应的项目
  • 将项目添加到一个新的数组中
  • Display array

示例

# importing numpy lib
import numpy as np
 
# making a numpy array
arr = np.array([x for x in range(11, 40)])
 
print("Original array")
print(arr)
 
# using lambda to apply condition
new_arr = list(filter(lambda x: x > 15 and x % 2 == 0 and x % 10 != 0, arr))
 
# Converting new list into numpy array
new_arr = np.array(new_arr)
print("New array")
print(new_arr)

输出

Original array

[11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

35 36 37 38 39]

New array

[16 18 22 24 26 28 32 34 36 38]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Numpy 数组操作