Python 金融量化分析
文章目录
- 1. IPython:交互式的 Python 命令行
- 安装
- 常用操作
- IPython Notebook
- 2. NumPy:数据计算模块
- 主要功能
- 安装与导入
- 创建 ndarray
- ndarray 的常用属性
- 示例代码
- 常用创建函数
- 示例代码
- 3. NumPy 索引和切片
- 数组运算
- 数组索引和切片
- 布尔型索引
- 花式索引
- 通用函数
- 数学和统计方法
- 随机数生成
- 示例代码
- 4. pandas: Series
- 安装与导入
- 创建方式
- 获取值数组和索引数组
- Series 特性
- 整数索引的 pandas 对象
- Series 数据对齐
- 处理缺失数据
- 示例代码
- 5.Pandas:DataFrame
- 5.1 DataFrame 概述
- 5.2 创建方式
- 方式一:使用字典创建,值为列表
- 方式二:使用字典创建,值为 Series
- 5.3 CSV 文件读取与写入
- 读取 CSV 文件
- 写入 CSV 文件
- 5.4 查看数据
- 常用属性及方法
- 修改列名和索引字段名
- 5.5 索引和切片
- 通过标签获取
- 通过位置获取
- 通过布尔值过滤
- 5.6 数据对齐与缺失数据
- 数据对齐
- 处理缺失数据的方法
- 5.7 其他常用方法(适用于 Series 和 DataFrame)
- 5.8 层次化索引
- 5.9 从文件读取数据
- 读取文件函数
- 主要参数
- 示例
- 5.10 写入到文件
- 写入文件函数
- 主要参数
- 其他文件类型
- 5.11 时间对象处理
- 时间序列类型
- Python 标准库:`datetime`
- 第三方包:`dateutil`
- 成组处理日期:Pandas
- 产生时间对象数组:`date_range`
- 示例
- 时间序列特殊功能
1. IPython:交互式的 Python 命令行
IPython 提供了一个强大的交互式环境,方便用户直接在命令行中粘贴和执行代码。
安装
使用以下命令进行安装:
pip install ipython
常用操作
- TAB 键:用于自动补全代码,提高输入效率。
?
:实现内省和命名空间搜索功能。例如,a.a*?
可补全命令,a?
查看变量详情,func??
查看函数详情。!
:用于执行 cmd 系统命令,如!ipconfig
。%run
:执行文件代码,如%run test.py
。%paste
和%cpaste
:执行剪贴板中的代码。%timeit
:计算函数运行的时间,如%timeit func(a, b)
。%pdb
:进入调试模式,使用%pdb on
开启,%pdb off
关闭。调试时会停在错误代码处,可使用p a
打印变量a
的值。- 历史命令:
_
代表上一个命令的结果,__
代表上上个命令的结果,_2
显示命令行上编号为 2 的结果,_i2
显示编号为 2 的代码。 %bookmark
:目录标签系统,方便快速切换目录。
IPython Notebook
IPython Notebook 是一个代码编辑器,可通过以下命令安装和运行:
pip install jupyter
jupyter notebook
2. NumPy:数据计算模块
NumPy 是高性能科学计算和数据分析的基础包,是 pandas 等其他工具的基础。
主要功能
- ndarray:一种多维数据结构,高效且节省时间。
- 数学函数:无需循环即可对整组数据进行快速运算。
- 数据读写:提供读写磁盘数据的工具以及操作内存映射文件的工具。
- 其他功能:支持线性代数、随机数生成和傅里叶变换,还可集成 C、C++ 等代码。
安装与导入
pip install numpy
import numpy as np
创建 ndarray
使用 np.array()
函数创建 ndarray,示例如下:
import randomprize = [round(random.uniform(10.0, 20.0), 2) for i in range(20)]
prize_np = np.array(prize)num = [random.randint(1, 10) for i in range(20)]
num_np = np.array(num)
ndarray 的常用属性
T
:数组的转置,适用于高级数组,可将其转换为二维数组等。dtype
:数组元素的数据类型,可使用a.dtype = 'int64'
修改。size
:数组元素的个数。ndim
:数组的维数。shape
:数组的维度大小,以元组形式表示。
示例代码
import sys# 查看占用内存的大小,array 明显比 list 小
print(sys.getsizeof(prize_np)) # 求出两个数组中每个数相乘之后的总和
print(np.dot(prize_np, num_np)) # 求出两个数组中每个数相乘
result = prize_np * num_np
print(result.sum()) # 数组中每个数乘以 2
print(prize_np * 2) # 创建二维数组
z = np.array([[1, 2, 3], [4, 5, 6]])
print(z.size)
print(z.shape)
print(z.T) # 修改数组元素的数据类型
z = z.astype('float32')
print(z)
常用创建函数
array()
:将列表转换为数组,可选择指定dtype
。arange()
:range
的 NumPy 版,支持浮点数步长。linspace()
:类似arange()
,第三个参数为数组长度。zeros()
:根据指定形状和dtype
创建全 0 数组。ones()
:根据指定形状和dtype
创建全 1 数组。empty()
:根据指定形状和dtype
创建空数组(随机值)。eye()
:根据指定边长和dtype
创建单位矩阵。
示例代码
# 步长可以设置为小数
print(np.arange(1, 10, 0.2)) # 生成 15 个线性代数
print(np.linspace(1, 10, 15)) # 生成全 0 数组
print(np.zeros(10))
print(np.zeros(10, dtype='int'))
print(np.zeros((3, 5))) # 生成全 1 数组
print(np.ones(10)) # 生成空数组
print(np.empty(10)) # 生成单位矩阵
print(np.eye(5))
3. NumPy 索引和切片
数组运算
- 数组和标量之间的运算:支持
*
、//
、+
、-
等运算。 - 同样大小数组之间的运算:支持
+
、/
、**
等运算。
数组索引和切片
- 索引:如
a[5]
、a2[2][3]
、a2[2, 3]
,逗号前表示行,逗号后表示列。 - 切片:如
a[5:8]
、a[:3] = 1
、a2[1:2, :4]
、a2[:, :1]
、a2[:, 1]
。与列表不同,数组切片时不会自动复制,在切片数组上的修改会影响原数组,可使用copy()
方法解决。
布尔型索引
a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# 选出数组中所有大于 5 的数字
print(a[a > 5])
# 选出数组中所有大于 5 的偶数
print(a[(a > 5) & (a % 2 == 0)])
# 选出数组中所有大于 5 的数和偶数
print(a[(a > 5) | (a % 2 == 0)])
花式索引
a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# 选出其第 1,3,4,6,7 个元素,组成新的二维数组
print(a[[1, 3, 4, 6, 7]]) a = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
# 选出其第一列和第三列,组成新的二维数组
print(a[:, [1, 3]])
通用函数
通用函数能同时对数组中所有元素进行运算,常见的一元函数有 abs
、sqrt
、exp
、log
等,二元函数有 add
、subtract
、multiply
等。
数学和统计方法
常用函数有 sum
(求和)、cumsum
(累计求和)、mean
(求平均数)、std
(求标准差)、var
(求方差)、min
(最小值)、max
(最大值)、argmin
(求最小值索引)、argmax
(求最大值索引)等。
随机数生成
rand
:给定形状产生随机数组(0 到 1 之间的数)。randint
:给定形状产生随机整数。choice
:给定形状产生随机选择。shuffle
:与random.shuffle
相同(洗牌)。uniform
:给定形状产生随机数组。
示例代码
# 1 到 10 的随机小数
print(np.random.rand() * 9 + 1) # 生成一个二维的数组
print(np.random.randint(1, 15, (3, 5))) # 洗牌
b = np.array([1, 2, 3, 4, 5])
np.random.shuffle(b)
print(b) # 生成两个 1 到 10 的随机数字
print(np.random.uniform(1, 10, 2))
4. pandas: Series
Series 是一种类似于一维数组的对象,由一组数据和一组与之相关的数据标签(索引)组成。
安装与导入
pip install pandas
import pandas as pd
创建方式
# 方式一
s1 = pd.Series([1, 2, 4, 2])
# 方式二
s2 = pd.Series([1, 2, 4, 2], index=['a', 'b', 'c', 'd'])
# 方式三
s3 = pd.Series({'a': 1, 'b': 2})
# 方式四
s4 = pd.Series(0, index=['a', 'b', 'c', 'd'])
获取值数组和索引数组
使用 values
属性和 index
属性获取值数组和索引数组。
Series 特性
- 支持 NumPy 模块的特性:支持下标操作、与标量运算、两个 Series 运算、索引、切片、通用函数和布尔值过滤。
- 支持字典的特性:支持从字典创建 Series、
in
运算、键索引和get
方法。
整数索引的 pandas 对象
如果索引是整数类型,根据整数进行数据操作时总是面向标签的。可使用 loc
通过标签解释,iloc
通过下标解释。
Series 数据对齐
pandas 在运算时会按索引进行对齐然后计算,如果存在不同的索引,结果的索引是两个操作索引的并集。可使用 add
方法的 fill_value
参数将缺失值设为 0。
处理缺失数据
使用 NaN
表示缺失数据,内置的 None
值也会被当作 NaN
处理。相关方法有 dropna()
(过滤掉值为 NaN
的行)、fillna()
(填充缺失数据)、isnull()
(返回布尔数组,缺失值对应为 True
)、notnull()
(返回布尔数组,缺失值对应为 False
)。
示例代码
a = pd.Series(np.arange(5), index=list('abcde'))
b = pd.Series(np.arange(5), index=list('cebad'))# 两个 Series 相加
print(a + b) # 将缺失值设为 0 后相加
print(a.add(b, fill_value=0)) # 过滤缺失数据
c = a + b
print(c.dropna()) # 填充缺失数据
print(c.fillna(0)) # 判断缺失数据
print(c.isnull())
5.Pandas:DataFrame
5.1 DataFrame 概述
DataFrame 是 Pandas 中一种表格型的数据结构,拥有一组有序的列。可以将其看作是由多个 Series 组成的字典,并且这些 Series 共用一个索引。
5.2 创建方式
方式一:使用字典创建,值为列表
import pandas as pd
df1 = pd.DataFrame({'one': [1, 2, 3, 4], 'two': [4, 3, 2, 1]})
方式二:使用字典创建,值为 Series
df2 = pd.DataFrame({'one': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']),'two': pd.Series([1, 2, 3, 4], index=['b', 'a', 'c', 'd'])})
5.3 CSV 文件读取与写入
读取 CSV 文件
df = pd.read_csv('test.csv')
写入 CSV 文件
df.to_csv('test2.csv')
5.4 查看数据
常用属性及方法
属性/方法 | 描述 |
---|---|
index | 获取行索引 |
T | 转置 DataFrame |
columns | 获取列索引 |
values | 获取值数组 |
describe | 获取快速统计信息 |
修改列名和索引字段名
# 修改列名
df.rename(columns={'close': 'new_close', 'open': 'new_open'})
# 修改索引字段名
df.index.name = 'iid'
5.5 索引和切片
通过标签获取
# 取一列
df['close']
# 取一个数字
df['close'][0]
# 取两列,返回二维数组
df[['close', 'open']]
# 取前十行的两列数据
df[0:10][['close', 'open']]
通过位置获取
# 取第 3 行数据
df.iloc[3]
# 取第 3 行的第 3 个数据
df.iloc[3, 3]
# 取前 3 行的 4、5 列数据
df.iloc[0:3, 4:6]
# 取前 4 行的所有数据
df.iloc[1:5, :]
# 取第 1、2、4 行,第 0、3 列的数据
df.iloc[[1, 2, 4], [0, 3]]
通过布尔值过滤
# 取 close 列大于 20 的值的行
df[df['close'] > 20]
# 取 2007.3.1 到 2007.3.4 之间的行
df[df['date'].isin(['2007/3/1', '2007/3/4'])]
# 取 id 列值为 1、3、5、7 的行的数据
df[df['id'].isin([1, 3, 5, 7])]
5.6 数据对齐与缺失数据
数据对齐
DataFrame 对象在进行运算时,会自动进行数据对齐,结果的行索引与列索引分别为两个操作数的行索引与列索引的并集。
处理缺失数据的方法
方法 | 描述 |
---|---|
dropna(axis=0, how='any') | axis 默认 0 表示按列处理,1 表示按行处理;how 默认 any 表示只要有一个缺失值就删除该行/列,all 表示全部为缺失值才删除该行/列 |
fillna() | 填充缺失数据 |
isnull() | 返回布尔数组,缺失值对应为 True |
notnull() | 返回布尔数组,缺失值对应为 False |
5.7 其他常用方法(适用于 Series 和 DataFrame)
方法 | 描述 |
---|---|
mean(axis=0, skipna=False) | 计算均值,axis 指定计算方向,skipna 表示是否跳过缺失值 |
sum(axis=1) | 计算总和,axis 指定计算方向 |
sort_index(axis, ascending) | 按行或列索引排序,如 df.sort_index(ascending=True, axis=1) 按列升序排序,df.sort_index(ascending=False, axis=0) 按行降序排序 |
sort_values(by, axis, ascending) | 按值排序,如 df.sort_values('close', ascending=True) 对 close 列按升序排序 |
apply(func, axis=0) | 将自定义函数应用在各行或者各列上,func 可返回标量或者 Series,如 df2.apply(lambda x: x.sum()) 计算各列值之和,等同于 df2.sum() |
applymap(func) | 将函数应用在 DataFrame 各个元素上,如 df2.applymap(lambda x: x + 1) 每个元素加 1 |
map(func) | 将函数应用在 Series 各个元素上 |
5.8 层次化索引
层次化索引是 Pandas 的一项重要功能,它允许在一个轴上拥有多个索引级别。
import numpy as np
data = pd.Series(np.random.rand(9), index=[['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c'], [1, 2, 3, 1, 2, 3, 1, 2, 3]])
# 两层索引取值
data['a'][1]
5.9 从文件读取数据
读取文件函数
Pandas 可以从文件名、URL、文件对象中加载数据,常用的读取文件函数有 read_csv
(默认分隔符为逗号)和 read_table
(默认分隔符为 \t
)。
主要参数
参数 | 描述 |
---|---|
sep | 指定分隔符,可以使用正则表达式,如 "\S+" |
header=None | 指定文件无列名 |
names | 指定列名 |
index_col | 指定某列作为索引 |
skiprows | 指定跳过某些行 |
na_values | 指定某些字符串表示缺失值,默认会将缺失值读取成 NaN ,可省略该参数 |
parse_dates | 指定某些列是否解析为日期,可为布尔值或列表 |
nrows | 指定读取几行文件 |
chunksize | 分块读取文件,指定块大小 |
示例
df = pd.read_table('test.csv', sep=',', header=None, names=['id', 'date', 'open', 'close', 'high', 'low', 'volume', 'code'], skiprows=[1, 2, 3, 4], index_col='date', parse_dates=['date'])
# 查看索引类型
print(type(df.index[0]))
5.10 写入到文件
写入文件函数
使用 to_csv
方法将 DataFrame 写入文件。
主要参数
参数 | 描述 |
---|---|
sep | 指定分隔符 |
na_sep | 指定缺失值转换的字符串,默认为空字符串 |
header=False | 不输出列名一行 |
index=False | 不输出索引一行,可避免读取文件时多出一列 |
cols | 指定输出的列,传入列表 |
其他文件类型
Pandas 还支持将数据写入 JSON、XML、HTML、数据库等其他文件类型。
5.11 时间对象处理
时间序列类型
- 时间戳:表示特定时刻。
- 固定时期:例如 2017 年 7 月。
- 时间间隔:从起始时间到结束时间。
Python 标准库:datetime
包含 date
、time
、datetime
、timedelta
等类,还提供了 strftime()
和 strptime()
方法用于时间格式的转换。
第三方包:dateutil
可以使用 dateutil.parser.parse("2017-01-01")
解析日期字符串,如果没有指定日,则以当前日期填充。
成组处理日期:Pandas
pd.to_datetime(['2017-01-01', '2017-01-02'])
产生时间对象数组:date_range
参数 | 描述 |
---|---|
start | 开始时间 |
end | 结束时间 |
periods | 时间长度 |
freq | 时间频率,默认为 D (天),可选值有 H (小时)、W (周)、B (工作日)、S (半月)、M (月)、T (分钟)、S (秒)、A (年)等 |
示例
# 生成 1 月 1 日到 2 月 1 日的工作日时间序列
pd.date_range("2017-01-01", "2017-02-01", freq='B')
# 生成 100 天的时间序列
pd.date_range("2017-01-01", periods=100)
# 获取有 2007 年的数据
df['2007']
# 获取一段时间的数据
df['2007-03-01':'2007-03-08']
时间序列特殊功能
时间序列是以时间对象为索引的 Series 或 DataFrame,当 datetime
对象作为索引时,会存储在 DatetimeIndex
对象中。时间序列支持传入年或年月作为切片方式,也支持传入日期范围作为切片方式。
相关文章:
Python 金融量化分析
文章目录 1. IPython:交互式的 Python 命令行安装常用操作IPython Notebook 2. NumPy:数据计算模块主要功能安装与导入创建 ndarrayndarray 的常用属性示例代码常用创建函数示例代码 3. NumPy 索引和切片数组运算数组索引和切片布尔型索引花式索引通用函…...
Linux:进程:进程控制
进程创建 在Linux中我们使用fork函数创建新进程: fork函数 fork函数是Linux中的一个系统调用,用于创建一个新的进程,创建的新进程是原来进程的子进程 返回值:如果子进程创建失败,返回值是-1。如果子进程创建成功&a…...
量子计算在金融领域的应用与展望
在当今数字化时代,金融行业正面临着前所未有的技术变革。量子计算作为前沿科技领域的明珠,正在逐渐从实验室走向实际应用,为金融行业带来新的机遇和挑战。本文将探讨量子计算在金融领域的应用现状、优势以及未来的发展展望。 一、量子计算简介…...
StarRocks:一款开源的高性能分析型数据仓库
StarRocks 是一款高性能分析型数据仓库,使用向量化、MPP 架构、CBO(基于成本优化)、智能物化视图、可实时更新的列式存储引擎等技术实现多维、实时、高并发的数据分析。 StarRocks 是一个 Linux 基金会开源项目,采用 Apache 2.0 许…...
NLP高频面试题(四十九)大模型RAG常见面试题解析
为什么要构建RAG系统? RAG系统通过结合信息检索和生成模型,解决了LLM在知识更新、幻觉和上下文限制等方面的挑战。它允许模型在生成响应前引用外部知识库,提高答案的准确性和相关性。 RAG与大模型微调的区别? 项目RAG系统大模型微调知识更新通过更新外部知识库实现需要重…...
【NLP 68、R-BERT】
为什么划掉你的名字,为什么不敢与你对视 —— 25.4.21 一、R-BERT:基于BERT的关系抽取模型 R-BERT(Relation BERT)是一种用于关系抽取(Relation Extraction)任务的模型,它结合了预训练语言模型…...
Java:多线程
多线程 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。 并发和并行 并发:在同一时刻,有多个指令在单个CPU上交替执行 并行:在同一时刻,有多个指令在多个CPU上同时执行 …...
第一章:自然语言处理
目录 1.1 自然语言处理发展史 1.2 统计语言模型发展史 统计语言模型 NNLM 模型 Word2Vec 模型 ELMo 模型 BERT 模型 大语言模型 1.3 小结 自然语言处理(Natural Language Processing,NLP)是一门借助计算机技术研究人类语言的科学。虽…...
Git 大文件使用 Git-LFS 管理,推送失败
配置了.gitattributes文件后, *.jar filterlfs difflfs mergelfs -text *.so filterlfs difflfs mergelfs -text *.aar filterlfs difflfs mergelfs -text *.bin filterlfs difflfs mergelfs -text *.a filterlfs difflfs mergelfs -text 仍然推送失败 POST git-…...
[c语言日寄]免费文档生成器——Doxygen在c语言程序中的使用
【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋:这是一个专注于C语言刷题的专栏,精选题目,搭配详细题解、拓展算法。从基础语法到复杂算法,题目涉及的知识点全面覆盖,助力你系统提升。无论你是初学者,还是…...
RK3588上编译opencv 及基于c++实现图像的读入
参考博文: https://blog.csdn.net/qq_47432746/article/details/147203889 一、安装依赖包 sudo apt install build-essential cmake git pkg-config libgtk-3-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libjpe…...
C++ GPU并行计算开发实战:利用CUDA/OpenCL加速粒子系统与流体模拟
🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C、C#等开发语言,熟悉Java常用开…...
Java 设计模式心法之第3篇 - 总纲:三大流派与导航地图
前两章,我们修炼了 SOLID 这套强大的“内功心法”,为构建高质量软件打下了坚实根基。现在,是时候鸟瞰整个设计模式的“武林”了!本文将为您展开一幅由 GoF 四人帮精心绘制的 23 种经典设计模式的“全景导航地图”。我们将探索这些…...
高级java每日一道面试题-2025年4月19日-微服务篇[Nacos篇]-Nacos未来的发展方向和规划有哪些?
如果有遗漏,评论区告诉我进行补充 面试官: Nacos未来的发展方向和规划有哪些? 我回答: Nacos 作为阿里巴巴开源的服务发现、配置管理和服务治理平台,其未来的发展方向和规划主要体现在以下几个关键领域: 1. 安全性与标准化 API分类精细化…...
跳过reCAPTCHA验证的技术解析与优化实践
Google的reCAPTCHA验证系统已成为保护网站安全的核心工具之一。然而,频繁的验证弹窗可能降低用户体验,甚至导致用户流失。如何在遵守平台规则的前提下,通过技术优化与用户行为管理减少验证触发率,成为我们亟需解决的难题。 但需要…...
idea使用docker插件一键部署项目
一、首先保证我们电脑上已经安装了docker docker -v查看docker版本,如果不能识别,需要先下载docker destop,在官网下载正常安装即可。 安装成功就可以使用docker 命令了 二、idea下载docker插件并配置docker参数 我是通过tcp连接docker服务…...
强化学习笔记(三)——表格型方法(蒙特卡洛、时序差分)
强化学习笔记(三)——表格型方法(蒙特卡洛、时序差分) 一、马尔可夫决策过程二、Q表格三、免模型预测1. 蒙特卡洛策略评估1) 动态规划方法和蒙特卡洛方法的差异 2. 时序差分2.1 时序差分误差2.2 时序差分方法的推广 3. 自举与采样…...
[SpringMVC]请求响应参数传递
controller前置url解决业务重名 在项目中,常常会碰到不同的业务之间的某个方法同名的情况。例如在一个文档管理系统(有着文档和发布者两个实体)中,两个实体都有着 "add" 业务。如果两个实体相关的业务url都用 "/ad…...
在C++业务类和QML之间创建一个数据桥梁
工作中经常会遇到两种业务直接按无法直接沟通,此时需要建立一个桥梁将两者进行联系起来,假设一个C业务类,有一个QML UI, 如果将BridgeClass 类通过qmlRegisterType 注册到QML中,在C中如何能够调用到BridgeClass 对象吗…...
超详细mac上用nvm安装node环境,配置npm
一、安装NVM 打开终端,运行以下命令来安装NVM: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash 然后就会出现如下代码: > Profile not found. Tried ~/.bashrc, ~/.bash_profile, ~/.zprofile, ~/.…...
MH2103系列coremark1.0跑分数据和优化,及基于arm2d的优化应用
CoreMark 1.0 介绍 CoreMark 是由 EEMBC(Embedded Microprocessor Benchmark Consortium)组织于 2009 年推出的一款用于衡量嵌入式系统 CPU 或 MCU 性能的标准基准测试工具。它旨在替代陈旧的 Dhrystone 标准(Dhrystone 容易受到各种libc不同…...
YOLO11改进 | 特征融合Neck篇之Lowlevel Feature Alignment机制:多尺度检测的革新性突破
## 为什么需要重新设计特征融合机制? 在目标检测领域,YOLO系列模型因其高效的实时性成为工业界和学术界的标杆。然而,随着应用场景的复杂化(如自动驾驶中的多尺度目标、无人机图像中的小物体检测),传统特征融合策略的局限性逐渐暴露:**特征对齐不足导致语义信息错位、多…...
解决方案:远程shell连不上Ubuntu服务器
服务器是可以通过VNC登录,排除了是服务器本身故障 检查服务是否在全网卡监听 sudo ss -tlnp | grep sshd确保有一行类似 LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid...,fd3))返回无结果,表明系统里并没有任…...
Flutter路由模块化管理方案
总结记录一下Flutter路由模块管理: 1、创建路由基类 abstract class BaseRouteConfig {Map<String, WidgetBuilder> get routes; } 2、创建不同模块的路由配置类 // 认证模块路由 class AuthRoutes extends BaseRouteConfig {overrideMap<String, Widg…...
Java BIO、NIO、AIO、Netty面试题(已整理全套PDF版本)
什么是IO Java中的I/O(输入/输出)机制基于流(Stream)的概念实现数据的传输。流将数据序列化,即按照特定顺序逐次进行读写操作。简而言之,Java程序通过I/O流与外部设备进行数据交换。 Java类库中的I/O功能十…...
TapData × 梦加速计划 | 与 AI 共舞,TapData 携 AI Ready 实时数据平台亮相加速营,企业数据基础设施现代化
在实时跃动的数据节拍中,TapData 与 AI 共舞,踏出智能未来的新一步。 4月10日,由前海产业发展集团、深圳市前海梦工场、斑马星球科创加速平台等联合发起的「梦加速计划下一位独角兽营」正式启航。 本次加速营以“打造下一位独角兽企业”为目…...
一键部署k8s之EFK日志收集系统
一、部署es 1.下载安装 #下载安装 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.13.2-linux-x86_64.tar.gz #解压 [rootes software]# tar xf elasticsearch-8.13.2-linux-x86_64.tar.gz #创建运行elasticsearch服务用户并修改权限 [rootes softw…...
Python常用的第三方模块【openpyxl库】读写Excel文件
openpyxl库模块是用于处理Microsoft Excel文件的第三方库,可以对Excel文件中的数据进行写入和读取。 weather.pyimport reimport requests#定义函数 def get_html():urlhttps://www.weather.com.cn/weather1d/101210101.shtml #爬虫打开浏览器上的网页resprequests.…...
加油站小程序实战教程12显示会员信息
目录 1 布局搭建1.1 搭建头像1.2 显示会员等级1.3 余额显示 最终效果 我们上一篇介绍了会员注册的功能,会员注册后再次进入页面的时候就可以根据openid加载会员信息,本篇我们介绍一下显示会员的余额 1 布局搭建 我们现在在我的页面显示的是会员未开通…...
iOS中使用AWS上传zip文件到Minio上的oss平台上
1. 集成AWS相关库(千万不要用最新的版本,否则会出现风格化虚拟路径,找不到主机名) pod AWSS3, ~> 2.10.0 pod AWSCore, ~> 2.10.0 2. 编写集成的相关代码 - (void)uploadFileToMinIO {NSString *endPoint "http://…...
PaginationInnerInterceptor使用(Mybatis-plus分页)
引言 最近在编写SQL语句时总是想着偷懒,于是在前不久学习黑马点评时学到可以使用PaginationInnerInterceptor,于是现在我也在自己的项目中进行使用了,但是使用也遇到一些问题,如果你和我的问题一样,希望我的解决办法能…...
极狐GitLab CEO 柳钢受邀出席 2025 全球机器学习技术大会
极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 2025 年 4 月 18 日至 19 日,2025 全球机器学习技术大会(ML-Summit 2025)在上海隆重举行。…...
数据仓库 vs 数据湖:架构、应用场景与技术差异全解析
目录 一、概念对比:结构化 vs 全类型数据 二、技术架构对比 1. 数据仓库架构特点 2. 数据湖架构特点 三、典型应用场景 数据仓库适合: 数据湖适合: 四、数据湖仓一体:趋势还是折中? 五、总结:如何…...
【25软考网工笔记】第三章 局域网(1)CSMA/CD、二进制指数退避算法、最小帧长计算
目录 一、CSMA/CD 1. 局域网架构概述 2. 局域网的拓扑结构 3. CSMA 1)CSMA的三种监听算法 1、1-坚持型监听算法(继续监听,不等待) 2、非坚持型监听算法(后退随机事件) 3、P-坚持型监听算法 2&#…...
Harbor对接非AWS对象存储
背景说明 项目的应用完全运行在一个离线环境中,同时通过K8S的方式进行容器编排。需要自建一个harbor的镜像仓库。并且通过私有云提供的S3服务进行容器镜像的持久化存储。我踩的其中的一个坑就是S3的region名字非AWS的标准名称。运行时抱错如下: 2025-04…...
实训Day-1 漏洞攻击实战
目录 实训任务1 漏洞攻击实战一 实训任务2 漏洞攻击实战二 实训任务3 白云新闻搜索 实训任务4 手速要快 实训任务5 包罗万象 总结 今天的实训目的是为了:了解漏洞攻击的一般步骤;掌握SQL注入的基本原理;掌握XSS攻击的基本原理ÿ…...
Linux-网络基础
一.网络背景 网络的起源与20世纪中期的冷战背景密切相关。美苏争霸期间,美国国防部担心传统集中式通信系统(如电话网络)在核战争中容易被摧毁,因此急需一种去中心化、高容错的通信方式。1969年,美国国防部高级研究计划…...
算法 | 鲸鱼优化算法(WOA)原理,公式,应用,算法改进研究综述,完整matlab代码
===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 鲸鱼优化算法 一、原理与公式二、应用领域三、算法改进研究四、完整MAT…...
[BJDCTF2020]EzPHP
这一道题里面的知识点实在是太多了,即使这道题是我最喜欢的RCE也有点大脑停转了,所以还是做个笔记,以后方便回忆 直接跳过打点,来到源码 <?php highlight_file(__FILE__); error_reporting(0); $file "1nD3x.php"…...
企业微信-自建应用
1. 创建自建应用 2. 配置小程序/H5入口 3. 准备 : CorpId(企业id)、 AgentID(应用id)、 CorpsecretID(应用Secret) 4. 配置企业可信IP 5. 如H5需要授权登录,那么需要配置网页授…...
[FPGA基础] 时钟篇
Xilinx FPGA 时钟管理详细文档 本文档详细介绍 Xilinx FPGA 中的时钟管理,包括时钟资源、时钟管理模块、设计注意事项以及最佳实践。适用于使用 Xilinx 7 系列、UltraScale 和 UltraScale 系列 FPGA 的开发者。 1. 时钟资源概述 Xilinx FPGA 提供丰富的时钟资源&a…...
高德火星坐标(GCJ-02)转WGS84坐标
高德火星坐标(GCJ-02)转WGS84坐标 1 转换算法 import mathdef gcj02_to_wgs84(lon, lat):"""高德火星坐标(GCJ-02)转WGS84坐标"""a 6378245.0 # 长半轴ee 0.00669342162296594323 # 扁率def transform_lon(x, y):ret 300.0 x 2.0 * y …...
基于opencv和PaddleOCR识别身份证信息
1、安装组件 pip install --upgrade paddlepaddle paddleocr 2、完整code import cv2 import numpy as np from paddleocr import PaddleOCR# 初始化 PaddleOCR use_angle_clsTrue, lang"ch", det_db_thresh0.1, det_db_box_thresh0.5)def preprocess_image(image…...
Day-1 漏洞攻击实战
实训任务1 漏洞攻击实战一 使用 御剑 得到网站后台地址 数据库登录与日志配置 使用默认密码 root:root 登录phpMyAdmin,执行 SHOW VARIABLES LIKE general% 查看日志状态。 开启日志功能:set global general_log "ON";(配图&…...
穿透数据迷雾:PR 曲线与 ROC 曲线的深度剖析+面试常见问题及解析
一、混淆矩阵与评价指标基础 混淆矩阵核心构成:混淆矩阵是分类模型性能评估的基石,以 22 矩阵形式呈现分类结果。其中,真正例(TP)表示实际为正类且被正确预测的样本;假正例(FP)是实…...
【Linux篇】轻松搭建命名管道通信:客户端与服务器的互动无缝连接
从零开始:基于命名管道实现客户端与服务器的实时通信 一. 命名管道1.1 基本概念1.2 创建命名管道1.2.1 创建方法1.2.2 示例代码:1.2.3 注意事项:1.3 与匿名管道区别 1.4 打开原则1.4.1 管道打开顺序1.4.2 阻塞行为1.4.3 管道的关闭1.4.4 关闭…...
快充协议芯片XSP04D支持使用一个Type-C与电脑传输数据和快充取电功能
快充是由充电器端的充电协议和设备端的取电协议进行握手通讯进行协议识别来完成的,当充电器端的充电协议和设备端的取电协议握手成功后,设备会向充电器发送电压请求,充电器会根据设备的需求发送合适的电压给设备快速供电。 设备如何选择快充…...
MySQL的窗口函数(Window Functions)
一、窗口函数核心概念 窗口(Window) 窗口是数据行的集合,由OVER()子句定义。它决定了函数计算的“数据范围”,可以是一个分区的全部行、当前行前后的行,或动态变化的子集。 语法结构 SELECT window_f…...
一个很简单的机器学习任务
一个很简单的机器学习任务 前言 基于线上colab做的一个简单的案例,应用了线性回归算法,预测了大概加州3000多地区的房价中位数 过程 先导入了Pandas,这是一个常见的Python数据处理函数库 用Pandas的read_csv函数把网上一个共享数据集&…...
ORION:通过视觉-语言指令动作生成的一个整体端到端自动驾驶框架
25年3月来自华中科技和小米电动汽车的论文“ORION: A Holistic End-to-End Autonomous Driving Framework by Vision-Language Instructed Action Generation”。 由于因果推理能力有限,端到端 (E2E) 自动驾驶方法仍然难以在交互式闭环评估中做出正确决策。当前的方…...