当前位置: 首页 > news >正文

【Python数据处理】MatplotlibNumpyPandas常用API整理

目录

Matplotlib

1. 导入 Matplotlib 并创建图布

2. 实现基础绘图

2.1 折线图

 2.2 柱状图

2.3 散点图

2.4 直方图

3. 完善绘图辅助功能

3.1 添加标题和标签

3.2 添加网格线

3.3 添加图例

4. 在一个坐标系下绘制多个图像

5. 在一个图形窗口创建多个子图

5.1 使用 add_subplot() 方法

5.2 使用 subplots() 方法

Numpy

ndarray 介绍

ndarray 的基本属性

创建数组

1. 创建全零数组

2. 创建全一数组

3. 创建固定范围的数组

4. 创建随机数组

数组的基本操作

1. 数组的访问和切片

2. 改变数组形状

3. 数组的合并与拆分

多维数组

1. 创建多维数组

2. 访问多维数组元素

3. 改变多维数组的形状

4. 多维数组的切片操作

ndarray 的运算

数组间运算

Pandas

Pandas 数据结构

1. Series

2. DataFrame

Pandas 中的索引、赋值和排序

1. 索引

2. 赋值

3. 排序

Pandas 中的统计函数

Pandas 中的累计统计函数和自定义函数

1. 累计统计函数

2. 自定义函数

Pandas 中绘图方式介绍

Pandas 中文件的读取和写入

1. 读取文件

2. 写入文件

缺失值的处理

1. 删除缺失值

2. 填充缺失值

数据离散化

数据表的合并

交叉表和透视表介绍

1. 交叉表

2. 透视表

分组聚合介绍


Matplotlib

Matplotlib 是一个功能强大的 Python 绘图库,广泛用于数据可视化。

1. 导入 Matplotlib 并创建图布

首先,我们需要导入 Matplotlib 和 NumPy,并创建图布(figure)。图布是所有绘图的容器,可以包含一个或多个子图(axes)。

import matplotlib.pyplot as plt
import numpy as np# 创建一个图布
fig = plt.figure(figsize=(8, 6), dpi=100)
  • figsize=(width, height): 图布的宽度和高度(以英寸为单位)。
  • dpi: 每英寸的点数(决定图像的分辨率)。

2. 实现基础绘图

Matplotlib 提供了多种图表类型。以下示例展示了如何创建折线图、柱状图、散点图和直方图。

2.1 折线图
x = np.linspace(0, 10, 100)
y = np.sin(x)plt.plot(x, y)
plt.title('Sine Wave')
plt.xlabel('X axis')
plt.ylabel('Y axis')
plt.show()
 2.2 柱状图
categories = ['A', 'B', 'C', 'D']
values = [3, 7, 2, 5]plt.bar(categories, values)
plt.title('Bar Chart')
plt.show()
2.3 散点图
x = np.random.rand(100)
y = np.random.rand(100)plt.scatter(x, y)
plt.title('Scatter Plot')
plt.show()
2.4 直方图
data = np.random.randn(1000)plt.hist(data, bins=30)
plt.title('Histogram')
plt.show()

3. 完善绘图辅助功能

为了让图表更加清晰和美观,可以添加标题、标签、图例和网格线。

3.1 添加标题和标签
plt.plot(x, y)
plt.title('Sine Wave')
plt.xlabel('X axis')
plt.ylabel('Y axis')
plt.show()
3.2 添加网格线
plt.plot(x, y)
plt.grid(True)
plt.title('Sine Wave with Grid')
plt.show()
3.3 添加图例
plt.plot(x, y, label='Sine')
plt.plot(x, np.cos(x), label='Cosine')
plt.legend()
plt.title('Sine and Cosine')
plt.show()

4. 在一个坐标系下绘制多个图像

可以在同一坐标系内绘制多个图形,通过多次调用 plot() 实现。

x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)plt.plot(x, y1, label='Sine')
plt.plot(x, y2, label='Cosine')
plt.legend()
plt.title('Multiple Plots on Same Axes')
plt.show()

5. 在一个图形窗口创建多个子图

Matplotlib 允许在一个图形窗口中创建多个子图。你可以使用 add_subplot()subplots() 方法。

5.1 使用 add_subplot() 方法
fig = plt.figure()ax1 = fig.add_subplot(2, 1, 1)  # 创建一个2行1列的布局,添加第1个子图
ax2 = fig.add_subplot(2, 1, 2)  # 创建第2个子图ax1.plot(x, np.sin(x))
ax1.set_title('Sine Wave')ax2.plot(x, np.cos(x))
ax2.set_title('Cosine Wave')plt.tight_layout()  # 自动调整子图间的间距
plt.show()
5.2 使用 subplots() 方法

subplots() 是一种便捷的方法,它不仅可以创建图布,还可以一次性创建多个子图。

fig, axs = plt.subplots(2, 2, figsize=(10, 8))axs[0, 0].plot(x, np.sin(x))
axs[0, 0].set_title('Sine')axs[0, 1].plot(x, np.cos(x))
axs[0, 1].set_title('Cosine')axs[1, 0].plot(x, np.tan(x))
axs[1, 0].set_title('Tangent')axs[1, 1].plot(x, np.log(x+1))
axs[1, 1].set_title('Logarithm')plt.tight_layout()
plt.show()

 

Numpy

NumPy 是 Python 中用于科学计算的基础库,它提供了支持大规模多维数组与矩阵运算的功能。此外,NumPy 还包含许多数学函数,可以方便地操作这些数组。

ndarray 介绍

在 NumPy 中,最重要的对象是 ndarray,这是一个多维数组对象,用于存储元素为相同类型的集合。ndarray 支持向量化操作,性能上要优于传统的 Python 列表。

ndarray 的基本属性
  • ndim: 数组的维度。
  • shape: 数组的形状,表示各维度大小的元组。
  • size: 数组元素的总个数。
  • dtype: 数组元素的数据类型。

创建数组

1. 创建全零数组

使用 np.zeros() 可以创建全零数组。

import numpy as np# 创建一个3x3的全零数组
zeros_array = np.zeros((3, 3))
print(zeros_array)
2. 创建全一数组

使用 np.ones() 可以创建全一数组。

# 创建一个2x4的全一数组
ones_array = np.ones((2, 4))
print(ones_array)
3. 创建固定范围的数组

使用 np.arange()np.linspace() 创建特定范围内的数组。

# 使用arange创建一个从0到9的数组
range_array = np.arange(10)
print(range_array)# 使用linspace创建一个从0到1的等间距数组,包含5个元素
linspace_array = np.linspace(0, 1, 5)
print(linspace_array)
4. 创建随机数组

NumPy 提供了多种方法来创建随机数组,如 np.random.rand()np.random.randint()

# 创建一个3x3的随机浮点数组,值在0到1之间
random_array = np.random.rand(3, 3)
print(random_array)# 创建一个2x2的随机整数数组,值在0到10之间
random_int_array = np.random.randint(0, 10, size=(2, 2))
print(random_int_array)

数组的基本操作

1. 数组的访问和切片

可以像访问列表一样访问 NumPy 数组的元素,并可以进行切片操作。

array = np.array([1, 2, 3, 4, 5])# 访问第一个元素
print(array[0])# 访问最后一个元素
print(array[-1])# 切片操作,获取数组中的一部分
print(array[1:4])
2. 改变数组形状

使用 reshape() 可以改变数组的形状,但元素总数必须匹配。

array = np.arange(12)
reshaped_array = array.reshape((3, 4))
print(reshaped_array)
3. 数组的合并与拆分

可以使用 np.concatenate() 合并数组,使用 np.split() 拆分数组。

array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])# 合并两个数组
merged_array = np.concatenate((array1, array2))
print(merged_array)# 拆分数组
split_array = np.split(merged_array, 3)
print(split_array)

多维数组

多维数组是 ndarray 的一个重要特性,可以处理高维数据(2D、3D 及以上)。多维数组的操作与一维数组相似,但需要考虑多个维度。

1. 创建多维数组
# 创建一个2x3x4的三维数组
multi_dim_array = np.zeros((2, 3, 4))
print(multi_dim_array)
2. 访问多维数组元素

多维数组元素的访问可以通过多个索引完成,每个索引对应数组的一个维度。

# 创建一个2x3的二维数组
array_2d = np.array([[1, 2, 3], [4, 5, 6]])# 访问第一行第二列的元素
print(array_2d[0, 1])  # 输出: 2# 访问整个第二行
print(array_2d[1, :])  # 输出: [4 5 6]
3. 改变多维数组的形状

可以使用 reshape() 改变数组形状,但元素总数必须匹配。

array = np.arange(12)
reshaped_array = array.reshape((3, 4))  # 将一维数组变为3x4的二维数组
print(reshaped_array)
4. 多维数组的切片操作

多维数组支持切片操作,可以选取数组的子集。

# 创建一个3x4的二维数组
array_2d = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])# 获取第二行的前两列
print(array_2d[1, :2])  # 输出: [5 6]# 获取第二列
print(array_2d[:, 1])  # 输出: [ 2  6 10]

ndarray 的运算

NumPy 支持对 ndarray 进行各种数学运算,包括加减乘除、幂运算等。

array = np.array([1, 2, 3, 4])# 数组元素加2
print(array + 2)# 数组元素乘3
print(array * 3)# 数组元素求平方
print(array ** 2)

数组间运算

数组间运算包括点对点的加减乘除运算,以及矩阵运算。

array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])# 点对点加法
print(array1 + array2)# 点对点乘法
print(array1 * array2)# 矩阵乘法
matrix1 = np.array([[1, 2], [3, 4]])
matrix2 = np.array([[5, 6], [7, 8]])print(np.dot(matrix1, matrix2))  # 或者使用 matrix1 @ matrix2



Pandas

Pandas 是一个用于数据操作和分析的 Python 库,特别适合处理结构化数据。它提供了两个核心数据结构:SeriesDataFrame,能够处理各种类型的数据。

Pandas 数据结构

1. Series

Series 是 Pandas 中的一维数据结构,可以看作是带标签的数组。每个元素都有一个索引,可以通过索引快速访问数据。

import pandas as pd# 创建一个带有默认索引的Series
s1 = pd.Series([1, 2, 3, 4])# 创建一个带有自定义索引的Series
s2 = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])# 创建一个从字典生成的Series
data = {'a': 100, 'b': 200, 'c': 300}
s3 = pd.Series(data)# 访问Series元素
first_element = s2['a']
2. DataFrame

DataFrame 是 Pandas 中最常用的二维数据结构,类似于数据库中的表格或 Excel 表格。它由多个 Series 组成,每列可以有不同的数据类型。

# 创建一个空的DataFrame
df1 = pd.DataFrame()# 从列表生成DataFrame
data_list = [['Alice', 24], ['Bob', 27], ['Charlie', 22]]
df2 = pd.DataFrame(data_list, columns=['Name', 'Age'])# 从字典生成DataFrame
data_dict = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [24, 27, 22]}
df3 = pd.DataFrame(data_dict)# 从嵌套字典生成DataFrame
data_nested_dict = {'Name': {0: 'Alice', 1: 'Bob'}, 'Age': {0: 24, 1: 27}}
df4 = pd.DataFrame(data_nested_dict)# 查看DataFrame的基本信息
df_info = df3.info()# 访问DataFrame元素
first_row = df3.iloc[0]   # 通过位置访问
name_column = df3['Name'] # 通过列名访问

Pandas 中的索引、赋值和排序

1. 索引

Pandas 提供了多种索引方式,可以通过 .loc.iloc 来进行标签或位置的索引。

# 通过标签索引
name_alice = df3.loc[0, 'Name']  # 获取第一行 'Name' 列的值# 通过位置索引
age_bob = df3.iloc[1, 1]  # 获取第二行第二列的值# 切片操作
subset_df = df3.loc[0:1, 'Name':'Age']  # 获取第一行到第二行、'Name' 列到 'Age' 列的数据
2. 赋值

Pandas 允许通过索引直接修改数据。

# 修改DataFrame中的值
df3.loc[0, 'Age'] = 25  # 将 'Age' 列第一行的值修改为 25# 增加新列
df3['City'] = ['New York', 'Los Angeles', 'Chicago']  # 新增 'City' 列,并赋值
3. 排序

可以使用 sort_values() 按值排序,使用 sort_index() 按索引排序。

# 按列值排序
df_sorted_by_age = df3.sort_values(by='Age')  # 按 'Age' 列升序排序# 按索引排序
df_sorted_by_index = df3.sort_index()  # 按行索引排序

Pandas 中的统计函数

Pandas 提供了多种统计函数,可以对数据进行描述性统计分析。

# 基本统计信息
df_description = df3.describe()  # 返回数值型数据的汇总统计# 单独计算统计量
mean_age = df3['Age'].mean()  # 计算 'Age' 列的平均值
sum_age = df3['Age'].sum()    # 计算 'Age' 列的总和# 计数操作
age_count = df3['Age'].count()  # 计算 'Age' 列中非空值的数量

Pandas 中的累计统计函数和自定义函数

Pandas 支持累计统计函数,并允许自定义函数应用于数据。

1. 累计统计函数
# 累计和
cumsum_age = df3['Age'].cumsum()  # 计算 'Age' 列的累计和# 累计乘积
cumprod_age = df3['Age'].cumprod()  # 计算 'Age' 列的累计乘积
2. 自定义函数

你可以使用 apply() 方法将自定义函数应用于 SeriesDataFrame

# 自定义函数应用到列上
df3['Age_double'] = df3['Age'].apply(lambda x: x * 2)  # 将 'Age' 列的值乘以 2# 自定义函数应用到整个DataFrame上
df3_transformed = df3.applymap(lambda x: str(x).upper() if isinstance(x, str) else x)  # 将所有字符串转换为大写

 

Pandas 中绘图方式介绍

Pandas 提供了便捷的绘图功能,可以通过 plot() 方法快速生成各种类型的图表。

# 绘制柱状图
df3['Age'].plot(kind='bar', title='Age Distribution')# 绘制折线图
df3['Age'].plot(kind='line', title='Age Trend')# 绘制直方图
df3['Age'].plot(kind='hist', title='Age Histogram')

Pandas 中文件的读取和写入

Pandas 提供了与多种文件格式的交互功能,支持文件的读取和写入操作。

1. 读取文件
# 读取CSV文件
df_csv = pd.read_csv('data.csv')  # 从文件 'data.csv' 中读取数据# 读取Excel文件
df_excel = pd.read_excel('data.xlsx')  # 从文件 'data.xlsx' 中读取数据# 读取SQL数据库
import sqlite3
conn = sqlite3.connect('database.db')
df_sql = pd.read_sql('SELECT * FROM table_name', conn)  # 从SQLite数据库中读取数据
2. 写入文件
# 写入CSV文件
df3.to_csv('output.csv', index=False)  # 将数据写入到 'output.csv' 文件中,不包含行索引# 写入Excel文件
df3.to_excel('output.xlsx', index=False)  # 将数据写入到 'output.xlsx' 文件中,不包含行索引

缺失值的处理

Pandas 提供了多种方法来处理数据中的缺失值。

1. 删除缺失值
# 删除包含缺失值的行
df_cleaned = df3.dropna()  # 删除包含 NaN 的行# 删除包含缺失值的列
df_cleaned_columns = df3.dropna(axis=1)  # 删除包含 NaN 的列
2. 填充缺失值
# 用指定值填充缺失值
df_filled = df3.fillna(0)  # 将所有缺失值填充为 0# 用前一个有效值填充缺失值
df_filled_ffill = df3.fillna(method='ffill')  # 前向填充# 用后一个有效值填充缺失值
df_filled_bfill = df3.fillna(method='bfill')  # 后向填充

数据离散化

数据离散化是将连续变量转换为离散变量的过程,Pandas 提供了 cut()qcut() 函数来实现这一功能。

# 使用 cut() 将年龄分为三个区间
df3['Age_group'] = pd.cut(df3['Age'], bins=3, labels=['Young', 'Middle', 'Old'])# 使用 qcut() 按照分位数离散化
df3['Age_quantile'] = pd.qcut(df3['Age'], q=4, labels=False)  # 将 'Age' 列按四分位数分为4组

数据表的合并

Pandas 提供了多种方法来合并多个数据表,常用的方法包括 merge()join()concat()

# 创建两个DataFrame用于合并
df_left = pd.DataFrame({'key': ['A', 'B', 'C'], 'value_left': [1, 2, 3]})
df_right = pd.DataFrame({'key': ['A', 'B', 'D'], 'value_right': [4, 5, 6]})# 使用 merge() 进行合并
df_merged = pd.merge(df_left, df_right, on='key', how='inner')  # 按照 'key' 列进行内连接# 使用 concat() 进行合并
df_concat = pd.concat([df_left, df_right], axis=0, ignore_index=True)  # 按行合并,忽略原始索引

交叉表和透视表介绍

Pandas 的交叉表和透视表功能用于汇总和聚合数据,是数据分析中的常用工具。

1. 交叉表

交叉表用于计算两个或多个分类变量之间的关系。

# 创建一个交叉表
cross_tab = pd.crosstab(df3['City'], df3['Age_group'])  # 按城市和年龄组创建交叉表
2. 透视表

透视表是用来汇总和计算分类数据的统计表格,类似于 Excel 的透视表功能。

# 创建一个透视表
pivot_table = df3.pivot_table(values='Age', index='City', columns='Age_group', aggfunc='mean')  # 计算不同城市和年龄组的平均年龄

分组聚合介绍

分组聚合是数据分析中常用的操作,通过对数据进行分组,可以对不同组的数据应用聚合函数,得到分组统计结果。

# 按城市分组并计算年龄的平均值
grouped = df3.groupby('City')['Age'].mean()  # 计算不同城市的平均年龄# 多列分组聚合
grouped_multi = df3.groupby(['City', 'Age_group'])['Age'].agg(['mean', 'sum'])  # 按城市和年龄组分组,并计算平均值和总和

相关文章:

【Python数据处理】MatplotlibNumpyPandas常用API整理

目录 Matplotlib 1. 导入 Matplotlib 并创建图布 2. 实现基础绘图 2.1 折线图 2.2 柱状图 2.3 散点图 2.4 直方图 3. 完善绘图辅助功能 3.1 添加标题和标签 3.2 添加网格线 3.3 添加图例 4. 在一个坐标系下绘制多个图像 5. 在一个图形窗口创建多个子图 5.1 使用 a…...

Nacos是阿里巴巴开源的一款分布式服务注册中心和配置中心

Nacos是阿里巴巴开源的一款分布式服务注册中心和配置中心,旨在帮助开发人员更轻松地构建和管理微服务架构。以下是关于Nacos的详细介绍: 一、概述 Nacos是Dynamic Naming and Configuration Service(动态命名和配置服务)的缩写&a…...

条形码与二维码报表

概述 条形码与二维码:演示条形码与二维码,条形码数据将来自于关联的字段值。支持各种常用的条形码与二维码。 应用场景 如下图所示,简单展示数据 示例说明 数据准备 在数据面板中添加数据集,可选择Json数据集和API服务数据…...

数据采集工具之Flume

本文主要实现数据到datahub的采集过程 1、下载 Index of /dist/flume/1.11.0 datahub插件下载 https://aliyun-datahub.oss-cn-hangzhou.aliyuncs.com/tools/aliyun-flume-datahub-sink-2.0.9.tar.gz 2、安装 $ tar aliyun-flume-datahub-sink-x.x.x.tar.gz $ cd aliyun-…...

【24年最新】AI大模型零基础入门到精通学习资料大全,学完你就是LLM大师!

零基础如何学习大模型 AI 领取方式在文末 为什么要学习大模型? 学习大模型课程的重要性在于它能够极大地促进个人在人工智能领域的专业发展。大模型技术,如自然语言处理和图像识别,正在推动着人工智能的新发展阶段。通过学习大模型课程&am…...

使用RabbitMQ死信交换机实现延迟消息

文章目录 什么是死信交换机?死信交换机实现延迟消息的思路实现过程配置类消费者监听死信队列发送延迟消息 注意事项总结 在开发过程中,我们常常会遇到需要延迟处理某些消息的场景,例如订单的支付超时处理、短信的定时发送等。本文将介绍如何使…...

overleaf上latex表格的使用,latex绘制三线表

三线表需要的包、代码及其示例解释。 一般需要用到的包: \usepackage{tabu} % 表格插入 \usepackage{multirow} % 一般用以设计表格,将所行合并 \usepackage{multicol} % 合并多列 \usepackage{m…...

聚焦光热型太阳光模拟器助力多晶硅均匀加热

晶圆均匀加热技术综述 晶圆均匀加热是半导体制造过程中的关键技术之一,直接影响着晶圆上各种加工工艺的质量和稳定性。晶圆加热的目的在于化学气相沉积、退火、氧化等工艺中,通过对晶圆进行必要的热处理,以促进或优化后续工艺步骤。不均匀的…...

【Android】四大组件(Activity、Service、Broadcast Receiver、Content Provider)、结构目录

文章目录 Android系统架构Android四大组件ActivityServiceBroadcast ReceiverContent Provider 两大视图主要结构目录 Android系统架构 https://blog.csdn.net/xzzteach/article/details/140904613 Android四大组件 Activity 一个 Activity 包含了用户能够看到的界面&#xff0…...

前端开发:创建可拖动的固定位置 `<div>` 和自动隐藏悬浮按钮

在前端开发中&#xff0c;实现一个可拖动的固定位置 <div>&#xff0c;并且根据拖动的状态控制其显示和隐藏&#xff0c;同时在特定条件下显示悬浮按钮&#xff0c;涉及以下技术和原理&#xff1a; 技术细节和实现步骤&#xff1a; 1. HTML 结构&#xff1a; <!DOC…...

Java Bean Validation 注解:@NotEmpty、@NotBlank 和 @NotNull 的区别

1. 概述 Bean Validation 是 Java 提供的一种对 Java Bean 实例的字段或方法参数进行校验的标准机制。它允许开发者使用注解的方式定义验证逻辑&#xff0c;这些注解可以在类、字段或者方法上声明&#xff0c;并且可以被任何实现了 JSR 303/JSR 349 规范的框架&#xff08;如 …...

Java | Leetcode Java题解之第322题零钱兑换

题目&#xff1a; 题解&#xff1a; public class Solution {public int coinChange(int[] coins, int amount) {int max amount 1;int[] dp new int[amount 1];Arrays.fill(dp, max);dp[0] 0;for (int i 1; i < amount; i) {for (int j 0; j < coins.length; j)…...

Linux初启征程指南:攻克常见系统指令与权限初理解

有时候觉得&#xff0c;电脑就像一个高贵冷艳的妹纸。 400&#xff0c;是她冷冰冰地说&#xff1a;“我听不懂你在说什么”&#xff1b; 401&#xff0c;是她无情地转身&#xff1a;“我不认识你&#xff0c;别说那些奇怪的话”&#xff1b; 403&#xff0c;是她残酷的拒绝&…...

第十九节、野猪受伤死亡逻辑动画

一、协程 在这个代码中&#xff0c;update更新非常快&#xff0c;不会有时间去addforce增加力 所以需要使用协程&#xff0c;同时开启 1、写法 WaitForSeconds(0.45f) 意思是等待时间0.45秒后 写完协程程序后&#xff0c;需要开启 &#xff0c;固定写法如下 2、注意 dir是局…...

vue 开发工具 Hbuilder 简介及应用

一、简介 HBuilderX 是一款流行的前端开发工具&#xff0c;由DCloud公司开发。它支持多种编程语言&#xff0c;如HTML、CSS、JavaScript、Vue、UniApp等&#xff0c;非常适合用来开发Web应用、移动端应用和跨平台应用。 官网地址&#xff1a;https://www.dcloud.io/hbuilderx.…...

【杂谈】-MQTT与HTTP在物联网中的比较:为什么MQTT是更好的选择

MQTT与HTTP在物联网中的比较&#xff1a;为什么MQTT是更好的选择 文章目录 MQTT与HTTP在物联网中的比较&#xff1a;为什么MQTT是更好的选择1、什么是MQTT2、什么是HTTP3、MQTT和HTTP之间的差异 MQTT&#xff08;消息队列遥测传输&#xff09;和HTTP&#xff08;超文本传输协议…...

冠豪猪优化算法(CPO)、卷积神经网络(CNN)与支持向量机(SVM)结合的预测模型(CPO-CNN-SVM)及其Python和MATLAB实现

### 一、背景 在现代数据挖掘和机器学习领域&#xff0c;特征选择与模型优化是两个重要的研究方向。随着深度学习的发展&#xff0c;卷积神经网络&#xff08;CNN&#xff09;在图像、视频等多媒体数据处理中的表现优异。然而&#xff0c;传统的CNN模型通常需要大量的标注数据和…...

【通信原理】

通信原理 二、频谱与随机信号2.1 频谱2.1.1 频谱or频谱密度函数2.1.2 幅度谱&#xff08;幅频特性&#xff09;or相位谱&#xff08;相频特性&#xff09; 2.2 能量信号2.2.1 什么是能量信号2.2.2 巴塞瓦尔定理2.2.3 维纳钦辛定理 2.3 功率信号2.3.1 功率信号2.3.2 巴塞瓦尔定理…...

有序数组的平方(LeetCode)

题目 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序。 解题 以下算法时间复杂度为 def sortedSquares(nums):n len(nums)result [0] * n # 创建一个结果数组&#xff0c;长度与 nums 相同le…...

Python配置镜像

1. 查看当前源 pip config get global.index-url 2. 临时变更源 pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple 3. 永久变更源 清华&#xff08;推荐速度最快&#xff09; pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple 百…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...