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]
版权声明:本页面内容旨在传播知识,为用户自行发布,若有侵权等问题请及时与本网联系,我们将第一时间处理。E-mail:284563525@qq.com