Python NumPy数组过滤:布尔索引与条件筛选实战
本文详解Python NumPy中的数组过滤技术,介绍如何利用布尔索引列表和条件表达式筛选数组元素。通过硬编码布尔值与动态生成过滤器两种方式的对比实例,演示如何提取大于特定值或偶数的元素,帮助开发者高效处理数据子集。
数组过滤
从现有数组中选取部分元素并构建新数组的操作被称为过滤(filtering)。
在 NumPy 库中,实现数组过滤主要依赖布尔索引列表。
所谓布尔索引列表,是指其元素与目标数组索引一一对应的布尔值序列。
当索引位置对应的布尔值为 True 时,该位置的元素会被保留在过滤后的新数组中;若为 False,则该元素将被排除。
实例
以下代码利用索引 0、2 和 4 对应的元素构建数组:
import numpy as np arr = np.array([61, 62, 63, 64, 65]) x = [True, False, True, False, True] newarr = arr[x] print(newarr)
运行上述代码

上述示例的输出结果为 [61, 63, 65],其原理如下:
因为生成的过滤器数组中,索引 0、2 和 4 对应的值为 True,所以仅包含这些索引位置的元素。
创建过滤器数组
在前面的示例中,True 和 False 值是手动硬编码的。但在实际应用中,通常需要根据特定条件动态生成过滤器数组。
实例
以下代码创建一个过滤器数组,仅返回大于 62 的元素:
import numpy as np
arr = np.array([61, 62, 63, 64, 65])
# 创建一个空列表
filter_arr = []
# 遍历 arr 中的每个元素
for element in arr:
# 如果元素大于 62,则将值设置为 True,否则为 False:
if element > 62:
filter_arr.append(True)
else:
filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)运行上述代码

实例
以下代码创建一个过滤器数组,仅返回原始数组中的偶数元素:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
# 创建一个空列表
filter_arr = []
# 遍历 arr 中的每个元素
for element in arr:
# 如果元素可以被 2 整除,则将值设置为 True,否则设置为 False
if element % 2 == 0:
filter_arr.append(True)
else:
filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)运行上述代码

直接从数组创建过滤器
此类操作在 NumPy 中极为常见,NumPy 提供了简洁高效的解决方案。
我们可以在条件判断中直接传入数组对象,而非遍历迭代变量,其运行效果符合预期。
实例
以下代码创建一个过滤器数组,仅返回大于 62 的元素:
import numpy as np arr = np.array([61, 62, 63, 64, 65]) filter_arr = arr > 62 newarr = arr[filter_arr] print(filter_arr) print(newarr)
运行上述代码

实例
以下代码创建一个过滤器数组,仅返回原始数组中的偶数元素:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7]) filter_arr = arr % 2 == 0 newarr = arr[filter_arr] print(filter_arr) print(newarr)
运行上述代码

关于 Python NumPy 数组过滤的介绍至此结束,更多相关 NumPy 数组过滤内容可查阅本站历史文章或继续浏览后续相关文章,感谢支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









