求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
要资料
 
追随技术信仰

随时听讲座
每天看新闻
 
 
NumPy 教程
1.NumPy是什么
2.NumPy下载与安装
3.NumPy ndarray对象
4.NumPy 简介
5.NumPy 入门
6.NumPy 数组索引
7.NumPy 数组裁切
8.NumPy 数据类型
9.NumPy 副本/视图
10.NumPy 数组形状
11.NumPy 数组重塑
12.NumPy 数组迭代
13.NumPy 数组连接
14.NumPy 数组拆分
15.NumPy 数组搜索
16.NumPy 数组排序
17.NumPy 数组过滤
18.NumPy 中的随机数
19.NumPy ufuncs
 

 
目录
NumPy 数组过滤
50 次浏览
3次  

数组过滤

从现有数组中取出一些元素并从中创建新数组称为过滤(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] ,为什么?

因为新过滤器仅包含过滤器数组有值 True 的值,所以在这种情况下,索引为 0 和 2、4。

创建过滤器数组

在上例中,我们对 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 提供了解决该问题的好方法。

我们可以在条件中直接替换数组而不是 iterable 变量,它会如我们期望地那样工作。

实例

创建一个仅返回大于 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)

 


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



50 次浏览
3次