(5) 深入探索Python-Pandas库的核心数据结构:Series详解

目录

  • 前言
  • 1. Series 简介
  • 2. Series的特点
  • 3. Series的创建
    • 3.1 使用列表创建Series
    • 3.2 使用字典创建Series
    • 3.3 使用列表和自定义索引创建Series
    • 3.4 指定数据类型和名称
  • 4. Series的索引/切片
    • 4.1 下标索引:基于整数位置的索引
    • 4.2 基于标签的索引
    • 4.3 切片
    • 4.4 使用.loc[]和.iloc[]进行索引
  • 5. 基本运算
    • 5.1 算术运算
      • 5.1.1 加法(+)
    • 5.2 比较运算
    • 5.3 逻辑运算
    • 6. 基本属性和方法
      • 6.1 基本属性示例
      • 6.2 基本方法示例
      • 6.3 检测缺失数据的方法
  • 7. 金融方面的几个series示例
    • 7.1 示例一:股票价格数据
    • 7.2 示例二:收益率数据
    • 7.3 示例三:交易量数据
  • 8. 总结

前言

大家好!我是架构筑梦的Cherry,本期跟大家分享的知识是 pandas 数据结构——DataFrame。

作者的【 Python智能工坊】专栏及【少儿编程Python:趣味编程,探索未来】正在火热更新中🔥🔥🔥,如果本文对您有帮助,欢迎大家点赞 + 评论 + 收藏 !

1. Series 简介

pandas数据结构中的Series是一个一维数组对象,能够保存任何数据类型(整数、字符串、浮点数、Python对象等),并有一个与之关联的标签序列,这些标签被称为“索引”(index)。索引与数据是一一对应的,通过索引可以快速获取、更新或删除数据。Series在pandas数据处理中起着至关重要的作用,是构建更复杂数据结构(如DataFrame)的基础。

以下是关于pandas Series的详细解释:

  • 定义:Series类似于一维数组或列表,但它有一个显式的索引,用于标记数据。
  • 组成:Series由两部分组成——值(values)索引(index)

在金融数据分析中,pandas的Series数据结构扮演着重要角色。它可以用来存储股价、交易量、市盈率等连续或离散的数据,并通过索引轻松访问和操作这些数据。Series支持多种数据类型,允许用户根据实际需求灵活使用。

2. Series的特点

  • 一维数组:Series是一维的,意味着它只有一个轴(或维度),类似于Python中的列表。
  • 索引:每个Series都有一个索引,用于对数据进行标记。索引可以是整数、字符串、日期等类型。如果不指定索引,pandas将默认创建一个从0开始的整数索引。
  • 数据类型:Series可以容纳不同数据类型的元素,包括整数、浮点数、字符串、Python对象等。
  • 大小不变性:Series的大小在创建后是不变的,但可以通过某些操作(如append或delete)来改变。
  • 操作:Series支持各种操作,如数学运算、统计分析、字符串处理等。
  • 缺失数据:Series可以包含缺失数据,pandas使用NaN(Not a Number)来表示缺失或无值。

3. Series的创建

Series可以通过多种方式进行创建,包括但不限于:

  • 使用列表或数组:可以传递一个列表或数组作为数据源来创建Series。
  • 指定索引:可以为每个元素指定索引标签。
  • 使用字典:字典的键成为索引,值成为数据。
  • 使用numpy的ndarray:可以直接使用numpy数组来创建Series。

pd.Series()是创建Series的常用方法,格式如下:

pd.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False)

参数说明:

  • data:这是必须的参数,可以是列表、数组、字典等,用于存储Series中的数据。
  • index:可选参数,用于指定索引标签。如果不提供,则默认使用从0开始的整数索引。
  • dtype:可选参数,用于指定数据类型。如果未指定,pandas会根据数据内容自动推断数据类型。
  • name:可选参数,用于给Series命名。命名后的Series在打印时会显示名称,方便识别。
  • copy:可选参数,默认为False。如果为True,则会将数据复制到新的Series中,原始数据不受影响。
  • fastpath:是否启用快速路径。默认为 False。启用快速路径可能会在某些情况下提高性能。

下面是几个创建 Series 的实例:

3.1 使用列表创建Series

import pandas as pd
s1 = pd.Series([1, 2, 3, 4, 5])
print(s1)

输出:

0    1
1    2
2    3
3    4
4    5
dtype: int64

输出结果说明:
第一列:0-4 为 索引值,默认从 0 开始;
第二列:1-5 为 数据;
dtype: int64 为该 Series 变量的数据类型;

3.2 使用字典创建Series

import pandas as pd
data = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
s2 = pd.Series(data)
print(s2)

输出:

a    1
b    2
c    3
d    4
e    5
dtype: int64

3.3 使用列表和自定义索引创建Series

import pandas as pd
labels = ['one', 'two', 'three', 'four', 'five']
s3 = pd.Series([1, 2, 3, 4, 5], index=labels)
print(s3)

输出:

one      1
two      2
three    3
four     4
five     5
dtype: int64

3.4 指定数据类型和名称

import pandas as pd
s4 = pd.Series([1.1, 2.2, 3.3, 4.4, 5.5], dtype=float, name='numbers')
print(s4)

输出:

0    1.1
1    2.2
2    3.3
3    4.4
4    5.5
Name: numbers, dtype: float64

注意:
当使用字典创建Series时,如果字典的键不是有序的(如Python 3.7之前的字典),则Series的索引顺序可能与字典的键插入顺序不同。但在Python 3.7及以后的版本中,字典保持插入顺序。
索引在Series中非常重要,它不仅用于标记数据,还用于数据的对齐和选择。因此,在创建Series时,应仔细考虑索引的设置。
如果在创建Series时提供了与数据长度不一致的索引,pandas会自动对缺失的数据使用NaN(Not a Number)进行填充。
默认情况下,如果不指定索引,pandas会为Series创建一个从0开始的整数索引。这种索引被称为“基于位置的索引”或“隐式索引”。在大多数情况下,这种索引对于数据分析和处理已经足够。然而,在需要明确标记或选择数据的情况下,可以手动指定索引标签。

4. Series的索引/切片

4.1 下标索引:基于整数位置的索引

import pandas as pd
 
# 创建一个默认的Series
s = pd.Series([10, 20, 30, 40, 50])
 
# 使用基于位置的索引访问数据
print(s[0])  
print(s[2:4])  

输出:

10
2    30
3    40
dtype: int64

4.2 基于标签的索引

在pandas的Series中,基于标签的索引是一种强大的功能,它允许你通过Series的索引标签来直接访问或操作数据。这种索引方式特别适用于具有明确标签(如股票名称、日期等)的数据集。

当你创建一个Series并为其指定了索引时,你就可以使用这些索引标签来访问、修改或选择数据。

下面是基于标签索引的示例:
假设我们有一个Series,它包含了几个股票在特定日期的收盘价,并使用了股票代码作为索引标签。

import pandas as pd

# 创建一个带有股票代码作为索引的Series
stocks = pd.Series([100.5, 201.2, 150.8], index=['AAPL', 'MSFT', 'GOOGL'])

# 使用基于标签的索引访问数据
print(stocks['AAPL'])  # 输出: 100.5

# 使用多个标签选择数据(返回一个Series)
subset = stocks[['AAPL', 'GOOGL']]
print(subset)
# 输出:
# AAPL    100.5
# GOOGL   150.8
# dtype: float64

# 修改基于标签的索引的数据
stocks['AAPL'] = 101.0
print(stocks)
# 输出:
# AAPL    101.0
# MSFT    201.2
# GOOGL   150.8
# dtype: float64

在上面的示例中,我们首先创建了一个Series对象stocks,其中包含了三个股票代码(‘AAPL’, ‘MSFT’, ‘GOOGL’)和它们对应的收盘价。然后,我们使用这些股票代码作为标签来访问和修改数据。

4.3 切片

与Python中的列表或NumPy数组类似,可以使用切片来访问Series的子集。
无论是基于位置的索引还是基于标签的索引,你都可以使用切片来访问数据的子集。不过,当使用基于标签的索引进行切片时,你需要确保切片的标签在Series的索引中是存在的,并且它们是连续的。

# 使用自定义索引的Series
s = pd.Series([10, 20, 30, 40, 50], index=['A', 'B', 'C', 'D', 'E'])
 
# 使用基于标签的切片(只有当标签连续时才有效)
print(s['A':'C'])  # 输出: A    10
                   #      B    20
                   #      C    30
                   # dtype: int64
 
# 使用基于位置的切片(始终有效)
print(s[1:4])  # 输出: B    20
               #      C    30
               #      D    40
               # dtype: int64

注意:如果基于标签的切片中的标签不连续或不存在于索引中,那么你会得到一个KeyError。如果你想要选择不连续标签的数据,你需要使用索引的loc属性,并传入一个标签列表。

4.4 使用.loc[]和.iloc[]进行索引

对于更复杂的数据选择或操作,你可以使用.loc[]方法。虽然对于单个标签的访问,直接使用标签和.loc[]是等效的,但.loc[]在处理多个标签或条件选择时更加灵活。

  • .loc[]:基于标签的索引。
  • .iloc[]:基于位置的索引(总是整数位置)。
# 使用.loc[]基于标签索引
print(s.loc['A':'C'])
 
# 使用.iloc[]基于位置索引
print(s.iloc[1:4])

输出:

A    10
B    20
C    30
dtype: int64
B    20
C    30
D    40
dtype: int64

.loc[]和.iloc[]提供了更明确和灵活的索引方式,特别是在处理复杂的数据集时。

5. 基本运算

在pandas库中,Series对象支持多种基本运算,这些运算包括算术运算、比较运算和逻辑运算。
以下是关于Series基本运算的详细解释:

5.1 算术运算

算术运算包括加、减、乘、除等基本操作。
在pandas中,Series对象之间可以直接进行这些运算,且pandas会自动处理索引对齐。

5.1.1 加法(+)

两个Series相加时,相同索引位置的元素会相加。如果两个Series长度相同且索引一致,则直接对应相加;如果长度不同或索引不完全对应,结果的索引将是两个Series索引的并集,不存在的索引将填充为NaN(表示非数字)。

示例:

import pandas as pd
s1 = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
s2 = pd.Series([4, 5, 6], index=['a', 'b', 'c'])
result_add = s1 + s2
print(result_add)  # 输出:a    5, b    7, c    9, dtype: int64
  • 减法(-)乘法(*)除法(/):这些运算与加法类似,都是基于索引进行对应元素的运算。

5.2 比较运算

比较运算用于比较两个Series的元素值,包括等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)和小于等于(<=)等。这些运算会返回一个布尔类型的Series,表示每个元素比较的结果。

示例:

s1 = pd.Series([1, 2, 3])
s2 = pd.Series([2, 2, 2])
result_eq = s1 == s2  # 比较是否相等
print(result_eq)  # 输出:0    False, 1     True, 2    False, dtype: bool

5.3 逻辑运算

逻辑运算在pandas中主要用于合并布尔Series。但请注意,直接对两个Series对象进行逻辑运算(如and、or)在pandas中并不直接支持,因为这会引发错误。相反,你应该使用按元素比较产生的布尔Series,并使用&(逻辑与)和|(逻辑或)等操作符进行逻辑运算。

示例:

s1_gt_1 = s1 > 1  # s1中大于1的元素
s2_lt_2 = s2 < 2  # s2中小于2的元素
result_logical = s1_gt_1 & s2_lt_2  # 逻辑与运算
print(result_logical)  # 输出:0    False, 1    False, 2    False, dtype: bool

在这个例子中,由于s1s2中没有同时满足s1 > 1s2 < 2的元素,所以结果全为False。

pandas的Series对象支持丰富的运算操作,包括算术运算、比较运算和逻辑运算。这些运算都是基于索引进行的,能够方便地处理和分析数据。在实际应用中,可以根据需要选择合适的运算操作来处理和分析数据。

6. 基本属性和方法

  • 属性:包括values(数据值)、index(索引)、dtype(数据类型)、name(名称)等。
  • 方法:提供了许多用于数据操作和分析的方法,如mean()(计算平均值)、std()(计算标准差)、unique()(返回唯一值)等。

下面是基本属性和方法的示例:

6.1 基本属性示例

首先,创建一个Series对象

import pandas as pd

s = pd.Series([100, 150, 110, 130, 150, 150], 
              index=['语文', '数学', '英语', 'Python', 'Pandas', 'NumPy'],
              name="考试成绩")

下面,是访问的基本属性:

  • shape:返回Series的形状(通常是一个元组,对于Series来说,通常只有一个元素表示长度)
print(s.shape)  # 输出: (6,)
  • size:返回Series的长度
print(s.size)  # 输出: 6
  • index:返回Series的索引
print(s.index)  # 输出: Index(['语文', '数学', '英语', 'Python', 'Pandas', 'NumPy'], dtype='object')
  • values:返回Series的值
print(s.values)  # 输出: array([100, 150, 110, 130, 150, 150], dtype=int64)
  • name:返回Series的名称
print(s.name)  # 输出: 考试成绩

6.2 基本方法示例

  • head():查看前几条数据,默认5条
print(s.head())  # 输出前5条数据
  • tail():查看后几条数据,默认5条
print(s.tail())  # 输出后5条数据
  • describe:返回描述统计信息
print(s.describe()) 

输出:

count      6.000000
mean     131.666667
std       22.286020
min      100.000000
25%      115.000000
50%      140.000000
75%      150.000000
max      150.000000
Name: 考试成绩, dtype: float64
  • idxmax:获取最大值和最小值的索引
print(s.idxmax())   # 输出:数学
print(s.idxmin())   # 输出:语文
  • dtype:数据类型
print(s.dtype)    # 输出:int64
  • sum:求和
print(s.sum())  # 输出:790
  • mean:平均值
print(s.mean())   # 输出:131.66666666666666
  • max:最大值
print(s.max())  # 输出:150
  • min:最小值
print(s.min())   # 输出:100
  • std:标准差
print(s.std()) # 输出:22.28601953392904
  • astype:将 Series 转换为另一种数据类型
s = s.astype('float64')  # 将 Series 中的所有元素转换为 float64 类型

6.3 检测缺失数据的方法

虽然在这个示例中没有缺失数据,但我们可以演示如何使用isnull()notnull()方法。

s_with_missing = pd.Series([100, 150, None, 130, 150, 150], 
                           index=['语文', '数学', '英语', 'Python', 'Pandas', 'NumPy'],
                           name="考试成绩")

print(s_with_missing.isnull())  # 输出布尔序列,表示哪些位置是缺失值

以上展示了pandas.Series的一些基本属性和方法。这些属性和方法提供了灵活且强大的工具来操作和分析一维数据。通过结合索引、值和属性,我们可以有效地处理数据并执行各种操作。

7. 金融方面的几个series示例

在金融领域,Series 可以用于存储和处理各种金融数据,如股票价格、收益率、交易量等。以下是几个与金融相关的 Series 示例:

7.1 示例一:股票价格数据

import pandas as pd

# 假设有以下股票数据
data = {'日期': ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04', '2023-01-05'],
        '收盘价': [100.0, 101.5, 102.1, 100.8, 103.0]}

# 将数据转换为pandas的DataFrame,然后选取'收盘价'列转换为Series
df = pd.DataFrame(data)
stock_prices = df.set_index('日期')['收盘价']

# 显示Series
print(stock_prices)

输出:

日期
2023-01-01    100.0
2023-01-02    101.5
2023-01-03    102.1
2023-01-04    100.8
2023-01-05    103.0
Name: 收盘价, dtype: float64

7.2 示例二:收益率数据

# 假设有以下收益率数据
dates = pd.date_range(start='2023-01-01', periods=5)
returns = pd.Series([0.01, 0.015, -0.005, 0.003, 0.02], index=dates)

# 显示Series
print(returns)

输出:

2023-01-01    0.01
2023-01-02    0.02
2023-01-03   -0.01
2023-01-04    0.00
2023-01-05    0.02
dtype: float64

7.3 示例三:交易量数据

# 假设有以下交易量数据
trade_dates = pd.date_range(start='2023-01-01', periods=4, freq='B')  # 只包括工作日
volumes = pd.Series([10000, 12000, 9800, 11500], index=trade_dates)

# 显示Series
print(volumes)

输出:

2023-01-02    10000
2023-01-03    12000
2023-01-04     9800
2023-01-05    11500
dtype: int64

这些示例展示了如何使用 pandas 中的 Series 来存储和处理金融数据。在实际应用中,这些数据可能来自多种来源,如数据库、API、文件等。处理这些数据时,可能会涉及到数据清洗、转换、分析和可视化等多个步骤。通过使用 Series 的各种属性和方法,可以方便地进行这些操作,为金融分析和决策提供支持。

8. 总结

pandas的Series数据结构提供了一种灵活且功能强大的方式来存储和处理一维数据。通过显式索引的引入,Series提供了更多的数据处理和分析选项,使其成为数据分析师和数据科学家的重要工具。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/786962.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机的核心工作机制

前言 本篇不介绍代码&#xff0c;主要是理解计算机的一些核心工作机制。想了解更多请跳转-->【【计算机科学速成课】[40集全/精校] - Crash Course Computer Science】 冯诺依曼体系结构 由计算机之父之一冯诺依曼提出的计算机内部构造的基本组成&#xff0c;而现在大多数…

向github远程仓库中push,要求使用token登录

Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. 如上&#xff0c;当向github远程仓库push时&#xff0c;输入github的用户名和密码出现如上错误&#xff0c;要求使用token登录&#xff0c;此时只需要用户…

智慧光伏一站式解决方案

光伏电站智慧化管理平台&#xff0c;将现代先进的数字信息技术、通信技术、互联网技术、云计算技术、大数据挖掘技术与光伏技术高度融合而形成。可以满足光伏企业对电站的高发电量、低初始投资、低运维成本等需求&#xff0c;从开发到运维的25年生命周期内&#xff0c;实现高收…

短视频矩阵搭建,用云微客获客更方便

你的同行都爆单了&#xff0c;你还在问什么是矩阵&#xff1f;让我来告诉你。短视频矩阵是短视频获客的一种全新玩法&#xff0c;是以品牌宣传、产品推广为核心的一个高端布局手段&#xff0c;也是非常省钱的一种方式。 1.0时代&#xff0c;一部手机一个账号&#xff1b;2.0时代…

【多媒体】Java实现MP4和MP3音视频播放器【JavaFX】【更多功能的播放器】【音视频播放】

在Java中播放视频可以使用多种方案&#xff0c;最常见的是通过Swing组件JFrame和JLabel来嵌入JMF(Java Media Framework)或Xuggler。不过&#xff0c;JMF已经不再被推荐使用&#xff0c;而Xuggler是基于DirectX的&#xff0c;不适用于跨平台。而且上述方案都需要使用第三方库。…

Linux系统备份工具TimeShift

Linux系统备份 Linux系统备份工具TimeShift Linux系统备份工具TimeShift 0. 前言1. 安装2. 启动3. 使用法一、图形界面操作&#xff08;方便&#xff09;法二、终端命令操作&#xff08;高端&#xff09; Linux系统备份工具TimeShift Linux系统备份工具TimeShift 0. 前言 Time…

SpringMVC--获取请求参数

1、通过的ServletAPI获取 只需要在控制器的方法的形参位置设置HTTPRequest request 类型的形参就i可以在控制器方法种使用request对象获取请求参数 RequestMapping("/servletAPI")public String getByServletAPI(HttpServletRequest request){HttpSession session…

【论文速读】| 用于安全漏洞防范的人工智能技术

本次分享论文&#xff1a;Artificial Intelligence Techniques for Security Vulnerability Prevention 基本信息 原文作者&#xff1a;Steve Kommrusch 作者单位&#xff1a;Colorado State University, Department of Computer Science, Fort Collins, CO, 80525 USA 关键…

硬盘分区读不出来的危机与数据拯救指南

在数字时代&#xff0c;硬盘作为我们存储珍贵数据的“保险箱”&#xff0c;其稳定性和可访问性至关重要。然而&#xff0c;当硬盘分区突然读不出来时&#xff0c;这份安全感瞬间化为泡影&#xff0c;让人心急如焚。本文将深入探讨硬盘分区读不出来的原因、提供两种实用的数据恢…

物流工业三防平板实时跟踪货物位置和状态

在当今全球化和高度数字化的商业环境中&#xff0c;物流行业的高效运作对于企业的成功和经济的繁荣至关重要。货物的准确、实时跟踪不仅能提高物流效率&#xff0c;还能增强客户满意度&#xff0c;降低运营成本。物流工业三防平板的出现&#xff0c;为实现货物位置和状态的实时…

短剧新风潮:海外制作的艺术与技术

海外短剧新风潮在艺术与技术两个维度上都展现出了显著的创新与进步。 艺术层面 1、内容创新&#xff1a; &#xff08;1&#xff09;多元化与包容性&#xff1a;海外短剧在内容创新上更加注重多元化和包容性&#xff0c;将不同地域、民族的文化元素融入创作中&#xff0c;展现丰…

从资金到未来:技术融资如何重塑IT顾问在AI与网络安全的角色?

一方面是人工智能 &#xff08;AI&#xff09; 和机器学习 &#xff08;ML&#xff09; 的双引擎&#xff0c;另一方面是网络安全和数据泄露威胁中不断变化的威胁形势&#xff0c;IT 格局正在经历翻天覆地的变化。这场数字革命对 IT 顾问来说既是挑战也是机遇&#xff0c;但要成…

解读‘‘不要卷模型,要卷应用‘‘

前言 2024 年 7 月 4 日&#xff0c;世界人工智能大会暨人工智能全球治理高级别会议全体会议在上海世博中心举行。百度创始人李彦宏在产业发展主论坛上发言&#xff0c;呼吁不要卷模型&#xff0c;要卷应用。 目录 四个要点 积极的观点 不合理性 总结 四个要点 李彦宏的呼吁…

【matlab】周期性信号分析

目录 信号预处理 周期性特征提取方法 频谱分析 傅里叶变换 快速傅里叶变换&#xff08;FFT&#xff09; 周期图法 Welch法 自相关分析 时频分析 基于模型的方法 时间序列分解 应用实例 提取信号的周期性特征是一个在信号处理领域广泛应用的技术&#xff0c;特别是在…

C#桌面应用开发:番茄定时器

C#桌面应用开发&#xff1a;番茄定时器 1、环境搭建和工程创建&#xff1a; 步骤一&#xff1a;安装visual studio2022 步骤二&#xff1a;新建工程 2、制作窗体部件 *踩过的坑&#xff1a; &#xff08;1&#xff09;找不到工具箱控件&#xff0c;现象如下&#xff1a;…

化妆品3D虚拟三维数字化营销展示更加生动、真实、高效!

随着人们越来越追求高速便捷的生活工作方式&#xff0c;企业在营销市场也偏国际化&#xff0c;借助VR全景制作技术&#xff0c;将企业1:1复刻到云端数字化世界&#xff0c;能带来高沉浸式的逼真、震撼效果。 通过我们独特的漫游点自然场景过渡技术&#xff0c;您将置身于一个真…

AWS无服务器 应用程序开发—第十七章 Application Composer

Application Composer 是 AWS 提供的一种可视化工具,用于设计和构建无服务器应用程序。它通过拖放界面简化了无服务器架构的创建过程,使开发者能够更直观地设计和配置应用程序的各个组件。 主要功能 可视化设计 通过拖放界面,开发者可以轻松地添加和配置 AWS 资源,如 L…

NVIDIA RTX 4090解析:卓越的性能表现带来全新的AI探索高度

前言 NVIDIA GeForce RTX 4090 在性能、效率和 AI 驱动的图形领域实现了质的飞跃。这款 GPU 采用 NVIDIA Ada Lovelace 架构&#xff0c;配备 24 GB 的 GDDR6X 显存。此外&#xff0c;RTX 4090还引入了多项创新技术。例如&#xff0c;它支持 DirectX12Ultimate&#xff0c;能够…

B站启用adblock插件导致无法看到评论

1 进入adblock插件的设置页面 2 进入自定义规则页面&#xff0c;编辑过滤规则 删除掉这一项 www.bilibili.com##P 然后&#xff0c;点击保存&#xff1b; 刷新页面就可以看到B站评论区的评论了。

[21] Opencv_CUDA应用之使用Haar级联的对象检测

Opencv_CUDA应用之使用Haar级联的对象检测 Haar级联使用矩形特征来检测对象,它使用不同大小的矩形来计算不同的线和边缘特征。矩形包含一些黑色和白色区域,如下图所示,它们在图像的不同位置居中 类Haar特征检测算法的思想是计算矩形内白色像素和黑色像素之间的差异这个方法的…