【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 库,特别适合处理结构化数据。它提供了两个核心数据结构:Series 和 DataFrame,能够处理各种类型的数据。
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() 方法将自定义函数应用于 Series 或 DataFrame。
# 自定义函数应用到列上
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 包含了用户能够看到的界面࿰…...
前端开发:创建可拖动的固定位置 `<div>` 和自动隐藏悬浮按钮
在前端开发中,实现一个可拖动的固定位置 <div>,并且根据拖动的状态控制其显示和隐藏,同时在特定条件下显示悬浮按钮,涉及以下技术和原理: 技术细节和实现步骤: 1. HTML 结构: <!DOC…...
Java Bean Validation 注解:@NotEmpty、@NotBlank 和 @NotNull 的区别
1. 概述 Bean Validation 是 Java 提供的一种对 Java Bean 实例的字段或方法参数进行校验的标准机制。它允许开发者使用注解的方式定义验证逻辑,这些注解可以在类、字段或者方法上声明,并且可以被任何实现了 JSR 303/JSR 349 规范的框架(如 …...
Java | Leetcode Java题解之第322题零钱兑换
题目: 题解: 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初启征程指南:攻克常见系统指令与权限初理解
有时候觉得,电脑就像一个高贵冷艳的妹纸。 400,是她冷冰冰地说:“我听不懂你在说什么”; 401,是她无情地转身:“我不认识你,别说那些奇怪的话”; 403,是她残酷的拒绝&…...
第十九节、野猪受伤死亡逻辑动画
一、协程 在这个代码中,update更新非常快,不会有时间去addforce增加力 所以需要使用协程,同时开启 1、写法 WaitForSeconds(0.45f) 意思是等待时间0.45秒后 写完协程程序后,需要开启 ,固定写法如下 2、注意 dir是局…...
vue 开发工具 Hbuilder 简介及应用
一、简介 HBuilderX 是一款流行的前端开发工具,由DCloud公司开发。它支持多种编程语言,如HTML、CSS、JavaScript、Vue、UniApp等,非常适合用来开发Web应用、移动端应用和跨平台应用。 官网地址:https://www.dcloud.io/hbuilderx.…...
【杂谈】-MQTT与HTTP在物联网中的比较:为什么MQTT是更好的选择
MQTT与HTTP在物联网中的比较:为什么MQTT是更好的选择 文章目录 MQTT与HTTP在物联网中的比较:为什么MQTT是更好的选择1、什么是MQTT2、什么是HTTP3、MQTT和HTTP之间的差异 MQTT(消息队列遥测传输)和HTTP(超文本传输协议…...
冠豪猪优化算法(CPO)、卷积神经网络(CNN)与支持向量机(SVM)结合的预测模型(CPO-CNN-SVM)及其Python和MATLAB实现
### 一、背景 在现代数据挖掘和机器学习领域,特征选择与模型优化是两个重要的研究方向。随着深度学习的发展,卷积神经网络(CNN)在图像、视频等多媒体数据处理中的表现优异。然而,传统的CNN模型通常需要大量的标注数据和…...
【通信原理】
通信原理 二、频谱与随机信号2.1 频谱2.1.1 频谱or频谱密度函数2.1.2 幅度谱(幅频特性)or相位谱(相频特性) 2.2 能量信号2.2.1 什么是能量信号2.2.2 巴塞瓦尔定理2.2.3 维纳钦辛定理 2.3 功率信号2.3.1 功率信号2.3.2 巴塞瓦尔定理…...
有序数组的平方(LeetCode)
题目 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 解题 以下算法时间复杂度为 def sortedSquares(nums):n len(nums)result [0] * n # 创建一个结果数组,长度与 nums 相同le…...
Python配置镜像
1. 查看当前源 pip config get global.index-url 2. 临时变更源 pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple 3. 永久变更源 清华(推荐速度最快) pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple 百…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
