python科学计算
文章目录
- 一、科学计算介绍
- 二、NumPy
- 2.1、NumPy是什么
- 2.2、NumPy使用场景
- 2.3、NumPy特点
- 2.4、NumPy如何使用
 
- 三、数组
- 3.1、数组介绍
- 3.2、创建数组
- 3.3、数组的大小
- 3.4、通过索引访问数组
- 3.5、变换数组的形态
- 3.6、常用的ufunc运算
 
一、科学计算介绍
python语言提供了array模块,与列表不同,array能直接保存数据,和C语言的一维数组类似;但由于array模块不支持多维数组,也没有各种运算函数,因此它不适合做数值运算。
Python具有丰富的库和工具,可以用于处理各种数学、科学和工程问题。以下是一些常用的Python科学计算库:
- NumPy(Numerical Python):提供了高性能的多维数组对象和用于处理数组的工具。
- SciPy(Scientific Python):基于NumPy,提供了许多科学计算功能,如线性代数、优化、积分等。
- pandas:提供了数据处理和分析的功能,如数据清洗、数据转换、数据聚合等。
- Matplotlib:用于绘制图表和可视化数据的库。
- Jupyter Notebook:交互式编程环境,可以方便地编写和共享代码。
二、NumPy
2.1、NumPy是什么
NumPy是一个用于科学计算的Python库,它提供了多维数组对象、数学函数库以及整合C/C++/Fortran代码的工具。
NumPy的核心是ndarray对象,该对象封装了n维同类数组。与Python标准序列不同,NumPy数组在创建时有固定大小,且数组中的元素必须是同一数据类型。
2.2、NumPy使用场景
- 科学计算: - 线性代数运算,如矩阵乘法、求逆和特征值分解。
- 微分和积分计算,用于求解复杂数学问题。
- 信号处理,例如傅里叶变换和滤波器设计。
 
- 机器学习: - 神经网络构建,利用NumPy进行高效的矩阵运算。
- 数据预处理,包括归一化和标准化操作。
- 实现各种机器学习算法,如支持向量机和K近邻算法。
 
- 图像处理: - 图像的读取、写入和显示,以及基本的图像转换操作。
- 图像滤波和增强,如平滑和锐化处理。
- 高级图像分析,例如边缘检测和目标识别。
 
- 数据分析: - 数据清洗和转换,确保数据质量。
- 统计分析,包括均值、标准差和协方差计算。
- 数据可视化,结合Matplotlib生成图表。
 
- 金融工程: - 模拟金融市场数据,如股票价格和收益率。
- 风险管理,计算VaR和其他金融指标。
- 资产定价模型的构建和测试。
 
- 工程仿真: - 有限元分析和流体动力学模拟。
- 优化问题的求解,如结构设计和参数调整。
- 高性能计算,通过并行化提高计算效率。
 
2.3、NumPy特点
- 多维数组对象:NumPy的核心数据结构是ndarray,它是一个多维数组,用于存储同质数据类型的元素。这种多维数组非常适合向量化操作和矩阵运算,可以是一维、二维、三维等。
- 广播功能:NumPy允许在不同形状的数组之间执行操作,通过广播机制,它能够自动调整数组的形状以使操作有效。这项功能极大地增强了NumPy的灵活性和计算效率,避免了手动编写循环的繁琐工作。
- 丰富的数学函数库:NumPy提供了大量的数学、统计和线性代数函数,包括基本的加减乘除、三角函数、指数和对数函数、随机数生成以及矩阵操作等。这些函数极大地方便了各种科学计算任务的实现。
- 高性能计算:NumPy的底层实现是用C语言编写的,因此在处理大规模数据时非常高效。与其他高性能计算库如BLAS和LAPACK集成,提供了快速的线性代数运算。由于释放了Python的GIL(全局解释器锁),NumPy在进行数组操作时可以实现并行计算。
- 互操作性:NumPy可以与许多其他Python库和数据格式无缝集成,例如Pandas、SciPy和Matplotlib等。这使得数据科学工作流更加流畅,从而为数据分析人员、科学家和工程师提供了一个功能强大且高效的工具。
2.4、NumPy如何使用
- 安装NumPy: - 通过Anaconda终端安装是较为便捷的一种方式。打开Anaconda终端,创建一个新的虚拟环境(例如名为NumpyTest),激活该环境,然后使用pip install numpy命令进行安装。
 对于网络问题导致的安装困难,可以考虑切换至国内镜像源,如清华园镜像。
 
- 通过Anaconda终端安装是较为便捷的一种方式。打开Anaconda终端,创建一个新的虚拟环境(例如名为NumpyTest),激活该环境,然后使用pip install numpy命令进行安装。
- 创建数组: - 一维数组可以通过np.array([1, 2, 3, 4])的方式创建。这会生成一个包含这些元素的数组。
- 二维数组或矩阵的创建方式类似,如np.array([[1, 2, 3], [4, 5, 6]])会生成一个2x3的矩阵。
- np.zeros((5, 3))会创建一个5行3列、所有元素为0的数组。
- 相反,np.ones((5, 3))会创建一个所有元素为1的同样维度的数组。
- np.empty((5, 3))则创建一个所有元素初始值为无限小(接近于0)的数组。
- np.arange(10, 16, 2)会生成一个从10到14(不包括16),步长为2的数组。
- np.linspace(1, 10, 20)则会在1到10之间均匀地生成20个数值组成的数组。
- 使用np.random.rand(3, 3)可以创建一个3x3的随机数组,每个元素值在0到1之间。
 
- 数组运算: - NumPy支持向量化操作,可以直接对数组执行逐元素运算,如c = a * b即实现了两个数组的逐元素乘法。
- 广播机制允许不同形状的数组进行运算,小数组会扩展到大数组的形状。例如,一个1维数组与一个2维数组相加时,1维数组会自动扩展成2维数组的形状后再进行运算。
 
- 数学函数: - NumPy提供了丰富的数学函数,如np.sin()、np.cos()、np.exp()等,可以直接对数组进行操作。
- 线性代数运算也非常便捷,例如矩阵乘法可以使用np.dot(A, B)实现。
 
- 索引切片: - 通过索引和切片操作,可以轻松访问和修改数组中的元素。例如,arr[0]会返回数组的第一个元素,而arr[:, 1]会返回所有行第二列的元素。
- 高级索引如arr[[0, 1], [2, 3]]允许更复杂的元素选择。
 
- 性能计算: - NumPy底层用C语言编写,并集成了BLAS和LAPACK等高性能计算库,特别适合处理大规模数据。
- 释放Python的GIL(全局解释器锁),在进行数组操作时可以实现并行计算,进一步提高性能。
 
- 互操作性: - NumPy可以与Pandas、SciPy和Matplotlib等多个Python库无缝集成,使得数据处理和分析工作流更加流畅。
 
三、数组
3.1、数组介绍
Python中的数组是一种用于存储有序数据集合的数据结构,其主要类型包括列表(list)、元组(tuple)和字典(dictionary)。
- 列表 - 定义和初始化:列表是可变数组,支持动态增加元素。例如,可以定义一个列表arr = [1, 2, 3]。
- 索引和切片:通过索引访问特定元素,如arr[0]获取第一个元素。切片操作如arr[1:3]获取从第二个到第三个元素之间的子列表。
- 修改元素:可以直接修改列表中的元素,如arr[0] = 10将第一个元素改为10。
- 遍历和迭代:使用for循环或enumerate()函数遍历列表中的元素,如for i, v in enumerate(arr): print(i, v)。
- 添加和删除元素:append()方法可以在列表末尾添加元素,而insert()方法可以在指定位置插入元素。pop()和remove()方法分别用于删除指定位置和首个匹配的元素。
 
- 元组 - 定义和不可变性:元组一旦创建,其元素不能更改。例如,可以定义一个元组t = (“a”, “b”, “c”)。
- 索引和切片:与列表类似,但不允许修改元素。例如,t[0]获取第一个元素,t[1:3]获取第二和第三个元素的子元组。
- 遍历和迭代:可以使用for循环遍历元组中的元素,如for i in t: print(i)。
- 用做字典键:由于元组是不可变的,它们可以用作字典的键,而列表则不行。
 
- 字典 - 定义和初始化:字典存储键值对,如d = {‘a’: 1, ‘b’: 2, ‘c’: 3}。
- 访问和修改值:通过键访问和修改对应的值,如d[‘a’]获取键’a’的值,而d[‘a’] = 10将键’a’的值改为10。
- 遍历和迭代:遍历字典的键、值或键值对,如for k, v in d.items(): print(k, v)。
- 添加和删除键值对:直接赋值可以添加新的键值对,而del语句或pop()方法用于删除键值对。
 
3.2、创建数组
ndarray是NumPy提供的用于存储单一数据类型的多维数组;NumPy提供了array函数,可以创建一维或多维数组。
一维数组
一维数组是由数字组成,排序单纯,结构单一的数组,python提供了列表和元组来实现一维数组的存储。
import numpy as np
# 创建一个一维数组
arr = np.array([1, 2, 3, 4, 5])
# 打印数组
print(arr)D:\pythonLED\python.exe E:/pythonProject/1.py
[1 2 3 4 5]
二维数组
二维数组在python中同样可以用列表和元组来表示。
import numpy as np
# 创建一个二维数组
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 打印数组
print(arr)D:\pythonLED\python.exe E:/pythonProject/1.py
[[1 2 3][4 5 6][7 8 9]]
数组形状变更
数组和python的列表有所不同,他提供了更多的操作,数组的shape属性是可以写的,可以通过修改数组的shape属性,在保持数组元素不变的情况下改变数组每个轴的长度。
import numpy as np
# 创建一个一维数组
arr = np.array([1, 2, 3, 4, 5, 6])
# 将一维数组转换为二维数组,形状为(2, 3)
new_arr = arr.reshape((2, 3))
print("原始数组:")
print(arr)
print("新形状的数组:")
print(new_arr)D:\pythonLED\python.exe E:/pythonProject/1.py
原始数组:
[1 2 3 4 5 6]
新形状的数组:
[[1 2 3][4 5 6]]
等差序列
NumPy提供了两个函数来创建等差序列,np.arange函数类似python自带的range函数,通过指定开始值,终值和步长来创建一维数组,创建的数组不含终值;np.linspace函数通过指定开始值,终值和元素个数来创建一维
# 使用列表推导式生成等差序列
def generate_arithmetic_sequence(start, end, step):return [x for x in range(start, end, step)]
# 使用循环生成等差序列
def generate_arithmetic_sequence_loop(start, end, step):sequence = []while start < end:sequence.append(start)start += stepreturn sequence
# 测试
print(generate_arithmetic_sequence(1, 10, 2))
print(generate_arithmetic_sequence_loop(1, 10, 2))D:\pythonLED\python.exe E:/pythonProject/1.py
[1, 3, 5, 7, 9]
[1, 3, 5, 7, 9]
等比序列
NumPy提供np.geomspace函数创建等比序列。
def geometric_sequence(a, r, n):return [a * (r ** i) for i in range(n)]
# 生成一个初始值为1,公比为2,长度为5的等比序列
sequence = geometric_sequence(1, 2, 5)
print(sequence)  D:\pythonLED\python.exe E:/pythonProject/1.py
[1, 2, 4, 8, 16]
单位矩阵
单位矩阵是指主对角线上的元素为1,其他元素为0的二维数组。
import numpy as np
identity_matrix = np.eye(3)
print(identity_matrix)D:\pythonLED\python.exe E:/pythonProject/1.py
[[1. 0. 0.][0. 1. 0.][0. 0. 1.]]
对角线矩阵
对角线矩阵中除主对角线以外其他元素都为0,主对角线的元素可以为0或其他值。
import numpy as np
diagonal_elements = [1, 2, 3]
matrix = np.diag(diagonal_elements)
print(matrix)D:\pythonLED\python.exe E:/pythonProject/1.py
[[1 0 0][0 2 0][0 0 3]]
随机数组
python自带了一个random模块用来生成随机数,但是random模块的函数每次只能生成一个随机数。
import random
# 创建一个包含5个随机整数的数组,整数范围为1到10
random_array = [random.randint(1, 10) for _ in range(5)]
print(random_array)D:\pythonLED\python.exe E:/pythonProject/1.py
[2, 7, 6, 8, 1]
3.3、数组的大小
NumPy除了使用shape属性来表示数组的形状外,还提供了几种属性来表示数组的大小。
| 属性 | 说明 | 
|---|---|
| ndim | 表示数组的维数 | 
| shape | 表示数组的形状,对于n行m列的矩阵,shape(n,m) | 
| size | 表示数组的元素个数 | 
| itemsize | 表示数组中单个元素的大小 | 
import numpy as np
# 创建一个二维数组
arr = np.array([[1, 2, 3], [4, 5, 6]])
# 使用 ndim 属性获取数组的维度
dimensions = arr.ndim
print("数组的维度为:", dimensions)D:\pythonLED\python.exe E:/pythonProject/1.py
数组的维度为: 2
import numpy as np
# 创建一个一维数组
arr1 = np.array([1, 2, 3, 4, 5])
print("一维数组的大小:", arr1.size)  # 输出:5
# 创建一个二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print("二维数组的大小:", arr2.size)  # 输出:6D:\pythonLED\python.exe E:/pythonProject/1.py
一维数组的大小: 5
二维数组的大小: 6
import numpy as np
# 创建一个一维数组
arr = np.array([1, 2, 3, 4, 5])
# 获取数组中每个元素的字节大小
item_size = arr.itemsize
print("每个元素的字节大小:", item_size)D:\pythonLED\python.exe E:/pythonProject/1.py
每个元素的字节大小: 8
3.4、通过索引访问数组
一维数组
import numpy as np
# 创建一个一维数组
arr = np.array([1, 2, 3, 4, 5])
# 通过整数索引访问数组中的元素
print(arr[0])  # 输出:1
print(arr[2])  # 输出:3
# 通过切片访问数组的一部分
print(arr[1:4])  # 输出:[2 3 4]
print(arr[:3])   # 输出:[1 2 3]
print(arr[2:])   # 输出:[3 4 5]D:\pythonLED\python.exe E:/pythonProject/1.py
1
3
[2 3 4]
[1 2 3]
[3 4 5]
多维数组
import numpy as np
# 创建一个二维数组
arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("二维数组:")
print(arr_2d)
# 通过索引访问二维数组的元素
print("访问第1行第2列的元素:", arr_2d[0, 1])
# 创建一个三维数组
arr_3d = np.array([[[1, 2, 3], [4, 5, 6], [7, 8, 9]], [[10, 11, 12], [13, 14, 15], [16, 17, 18]]])
print("三维数组:")
print(arr_3d)
# 通过索引访问三维数组的元素
print("访问第1个矩阵的第2行第3列的元素:", arr_3d[0, 1, 2])D:\pythonLED\python.exe E:/pythonProject/1.py
二维数组:
[[1 2 3][4 5 6][7 8 9]]
访问第1行第2列的元素: 2
三维数组:
[[[ 1  2  3][ 4  5  6][ 7  8  9]][[10 11 12][13 14 15][16 17 18]]]
访问第1个矩阵的第2行第3列的元素: 6Process finished with exit code 0
3.5、变换数组的形态
NumPy除了提供直接修改shape属性的方法来改变数组的形状外,还提供了reshape函数来改变数组的形状;reshape函数不会改变原始数组的形状,新生成的数组与原始数组共享一块数据存储空间。
import numpy as np
# 创建一个一维数组
arr = np.array([1, 2, 3, 4, 5, 6])
# 使用reshape()函数将一维数组转换为二维数组
reshaped_arr = arr.reshape((2, 3))
print("原始数组:")
print(arr)
print("变换后的数组:")
print(reshaped_arr)D:\pythonLED\python.exe E:/pythonProject/1.py
原始数组:
[1 2 3 4 5 6]
变换后的数组:
[[1 2 3][4 5 6]]
3.6、常用的ufunc运算
ufunc运算是NumPy库中的一个概念,它表示通用函数(universal function)。ufunc是一种能够对数组中的每个元素进行操作的函数,它允许你在整个数组上执行元素级别的操作,而无需使用循环。ufunc具有广播功能,可以自动处理不同形状的数组之间的操作。这使得ufunc在处理大量数据时非常高效。
矩阵的四则运算
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
add_result = np.add(arr, 2)
print(add_result)  # 输出:[3 4 5 6 7]
subtract_result = np.subtract(arr, 2)
print(subtract_result)  # 输出:[-1  0  1  2  3]
multiply_result = np.multiply(arr, 2)
print(multiply_result)  # 输出:[ 2  4  6  8 10]
divide_result = np.divide(arr, 2)
print(divide_result)  # 输出:[0.5 1.  1.5 2.  2.5]D:\pythonLED\python.exe E:/pythonProject/1.py
[3 4 5 6 7]
[-1  0  1  2  3]
[ 2  4  6  8 10]
[0.5 1.  1.5 2.  2.5]
矩阵的比较运算
import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([[4, 3], [2, 1]])
result = np.greater(A, B)
print(result)D:\pythonLED\python.exe E:/pythonProject/1.py
[[False False][ True  True]]
逻辑运算
import numpy as npA = np.array([[1, 0, 1],[0, 1, 0],[1, 1, 0]])B = np.array([[1, 1, 0],[0, 1, 1],[1, 0, 0]])
C = np.logical_and(A, B)
print(C)D:\pythonLED\python.exe E:/pythonProject/1.py
[[ True False False][False  True False][ True False False]]
NumPy提供了三角函数、随机和概率分布、基本数值统计、傅里叶变换、矩阵运算等丰富的函数运算。
相关文章:
python科学计算
文章目录 一、科学计算介绍二、NumPy2.1、NumPy是什么2.2、NumPy使用场景2.3、NumPy特点2.4、NumPy如何使用 三、数组3.1、数组介绍3.2、创建数组3.3、数组的大小3.4、通过索引访问数组3.5、变换数组的形态3.6、常用的ufunc运算 一、科学计算介绍 python语言提供了array模块&am…...
 
Leetcode - 132双周赛
目录 一、3174. 清除数字 二、3175. 找到连续赢 K 场比赛的第一位玩家 三、3176. 求出最长好子序列 I 四、3177. 求出最长好子序列 II 一、3174. 清除数字 本题可以使用栈来模拟,遇到数字弹出栈顶元素,遇到字母入栈。 代码如下: //使用字…...
 
Mongodb在UPDATE操作中使用$push向数组中插入数据
学习mongodb,体会mongodb的每一个使用细节,欢迎阅读威赞的文章。这是威赞发布的第69篇mongodb技术文章,欢迎浏览本专栏威赞发布的其他文章。如果您认为我的文章对您有帮助或者解决您的问题,欢迎在文章下面点个赞,或者关…...
ArcGIS JSAPI 高级教程 - ArcGIS Maps SDK for JavaScript - 锐化效果
ArcGIS JSAPI 高级教程 - ArcGIS Maps SDK for JavaScript - 锐化效果 核心代码完整代码在线示例ArcGIS Maps SDK for JavaScript 从 4.29 开始增加 RenderNode 类,可以添加数据以及操作 FBO(ManagedFBO); 通过操作 FBO,可以通过后处理实现很多效果,官方提供了几个示例,…...
 
信息系统项目管理师 | 信息系统安全技术
关注WX:CodingTechWork 信息安全概念 安全属性 秘密性:信息不被未授权者知晓。完整性:信息是正确的、真实的、未被篡改的、完整无缺。可用性:信息可以随时正常使用。 安全分层 设备安全 设备的稳定性:在一定时间…...
 
Java数据类型与运算符
1. 变量和类型 变量指的是程序运行时可变的量,相当于开辟一块空间来保存一些数据。 类型则是对变量的种类进行了划分,不同类型的变量具有不同的特性。 1.1 整型变量(重点) 基本语法格式: int 变量名 初始值;代码示…...
 
网络虚拟化考题
vrrp讲过吗??? d 每一层都是什么设备啊 abcd 为啥流量不可控不可视 c是啥意思 讲过吗 abc aNET网络虚拟化是啥啊 为啥?? 啥是CDN?????...
 
《C++ Primer》导学系列:第 7 章 - 类
7.1 定义抽象数据类型 7.1.1 类的基本概念 在C中,类是用户定义的类型,提供了一种将数据和操作这些数据的函数(成员函数)组合在一起的方法。类定义了对象的属性和行为,通过实例化类来创建对象。 7.1.2 定义类 定义类…...
 
idea intellij 2023打开微服务项目部分module未在左侧项目目录展示(如何重新自动加载所有maven项目model)
项目场景: springcloud微服务项目,部分模块暂时不需要用到,就在pom.xml文件中注释掉相应的模块,突然有一天打开项目,部分项目module 在idea intellij工具左侧文件夹找不到了,重新file->open本地项目也还是部分模块…...
生成视频 zeroscope_v2_576w 学习笔记
目录 生成视频代码: 维度报错: 解决方法,修改代码: 已开源: 视频生成模型 Zeroscope开源 免费无水印 视频生成模型 Zeroscope_v2_576w 开源 - 腾讯云开发者社区-腾讯云 生成视频代码: import torch fro…...
 
H3C综合实验
实验拓扑 实验要求 1、按照图示配置IP地址 2、sw1和sw2之间的直连链路配置链路聚合 3、 公司内部业务网段为VLAN10和VLAN20; VLAN 10是市场部,vlan20是技术部,要求对VLAN进行命名以便识别;PC1属于vlan10,PC2属于vlan20…...
 
QThread 与QObject::moveToThread在UI中的应用
1. QThread的两种用法 第一种用法就是继承QThread,然后覆写 virtual void run(), 这种用法的缺点是不能利用信号槽机制。 第二种用法就是创建一个线程,创建一个对象,再将对象moveToThread, 这种可以充分利用信号槽机制ÿ…...
 
安卓逆向案例——X酷APP逆向分析
X酷APP逆向分析 这里介绍一下两种不同的挂载证书的方法。 chls.pro/ssl无法在浏览器中下载证书是什么原因解决方法: 法一 1. 挂载系统分区为读写 使用正确的挂载点来挂载系统分区为读写: su mount -o remount,rw /dev/uijISjR/.magisk/block/syste…...
 
创新案例|星巴克中国市场创新之路: 2025目标9000家店的挑战与策略
星巴克创始人霍华德舒尔茨:“为迎接中国市场的全面消费复苏,星巴克2025年推进9000家门店计划,将外卖、电商以及家享和外出场景咖啡业务纳入中国新一轮增长计划中。”在面临中国市场同店增长大幅下滑29%背景下,星巴克通过DTC用户体…...
 
计算机网络 MAC地址表管理
一、理论知识 1.MAC地址表:交换机使用MAC地址表来记录各MAC地址对应的端口,用于帧转发的目的。 2.老化机制:交换机会为每一条MAC地址表项设置老化时间,老化时间到期后未收到该MAC地址报文的表项将被删除,释放资源。 …...
 
【免费API推荐】:各类API资源免费获取【11】
欢迎来到各类API资源的免费获取世界!幂简集成为您提供了一个集合了各种免费API接口的平台。无论您是开发者、数据分析师还是创业者,都可以通过我们的平台轻松免费获取所需的API资源。幂简精心整理了各类API接口,涵盖了不同领域的需求…...
 
技术驱动会展:展位导航系统的架构与实现
随着会展行业的快速发展,大型会展中心面临着如何提升参展者体验、提高招商效率的挑战。针对客户反馈的展馆面积大、展位查找困难等问题,维小帮提出一套智慧会展导航解决方案,旨在通过先进的室内导航技术提升会展中心的运营效率和参展者的满意…...
 
适用于轨道交通专用的板卡式网管型工业以太网交换机
是网管型 CompactPCI板卡式冗余环网交换机。前面板带有6个 10/100/1000Base-T(X)M12接口。后面的CPCI接口有 8个10/100/1000Base-T (X) 以太网接口。 是特别为轨道交通行业EN50155标准要求而设计的坚固型交换机。它同时具有以下特性: ● 支持2线以太网距离扩展端口&…...
 
excel基本操作
excel 若要取消在数据表中进行的所有筛选 步骤操作: 单击“数据”选项卡。在“排序和筛选”组中,找到“清除”按钮。点击“清除”按钮。 图例: 将文本文件的数据导入到Excel工作表中进行数据处理 步骤: 在Excel中,…...
C++系统相关操作2 - 获取系统环境变量
1. 关键词2. sysutil.h3. sysutil.cpp4. 测试代码5. 运行结果6. 源码地址 1. 关键词 C 系统调用 环境变量 getenv 跨平台 2. sysutil.h #pragma once#include <cstdint> #include <string>namespace cutl {/*** brief Get an environment variable.** param na…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
 
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
Docker拉取MySQL后数据库连接失败的解决方案
在使用Docker部署MySQL时,拉取并启动容器后,有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致,包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因,并提供解决方案。 一、确认MySQL容器的运行状态 …...
 
篇章二 论坛系统——系统设计
目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...
