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

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命令进行安装。
      对于网络问题导致的安装困难,可以考虑切换至国内镜像源,如清华园镜像。
  • 创建数组:
    • 一维数组可以通过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. 清除数字 本题可以使用栈来模拟&#xff0c;遇到数字弹出栈顶元素&#xff0c;遇到字母入栈。 代码如下&#xff1a; //使用字…...

Mongodb在UPDATE操作中使用$push向数组中插入数据

学习mongodb&#xff0c;体会mongodb的每一个使用细节&#xff0c;欢迎阅读威赞的文章。这是威赞发布的第69篇mongodb技术文章&#xff0c;欢迎浏览本专栏威赞发布的其他文章。如果您认为我的文章对您有帮助或者解决您的问题&#xff0c;欢迎在文章下面点个赞&#xff0c;或者关…...

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&#xff1a;CodingTechWork 信息安全概念 安全属性 秘密性&#xff1a;信息不被未授权者知晓。完整性&#xff1a;信息是正确的、真实的、未被篡改的、完整无缺。可用性&#xff1a;信息可以随时正常使用。 安全分层 设备安全 设备的稳定性&#xff1a;在一定时间…...

Java数据类型与运算符

1. 变量和类型 变量指的是程序运行时可变的量&#xff0c;相当于开辟一块空间来保存一些数据。 类型则是对变量的种类进行了划分&#xff0c;不同类型的变量具有不同的特性。 1.1 整型变量&#xff08;重点&#xff09; 基本语法格式&#xff1a; int 变量名 初始值;代码示…...

网络虚拟化考题

vrrp讲过吗&#xff1f;&#xff1f;&#xff1f; d 每一层都是什么设备啊 abcd 为啥流量不可控不可视 c是啥意思 讲过吗 abc aNET网络虚拟化是啥啊 为啥&#xff1f;&#xff1f; 啥是CDN&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;...

《C++ Primer》导学系列:第 7 章 - 类

7.1 定义抽象数据类型 7.1.1 类的基本概念 在C中&#xff0c;类是用户定义的类型&#xff0c;提供了一种将数据和操作这些数据的函数&#xff08;成员函数&#xff09;组合在一起的方法。类定义了对象的属性和行为&#xff0c;通过实例化类来创建对象。 7.1.2 定义类 定义类…...

idea intellij 2023打开微服务项目部分module未在左侧项目目录展示(如何重新自动加载所有maven项目model)

项目场景&#xff1a; springcloud微服务项目,部分模块暂时不需要用到&#xff0c;就在pom.xml文件中注释掉相应的模块&#xff0c;突然有一天打开项目&#xff0c;部分项目module 在idea intellij工具左侧文件夹找不到了&#xff0c;重新file->open本地项目也还是部分模块…...

生成视频 zeroscope_v2_576w 学习笔记

目录 生成视频代码&#xff1a; 维度报错&#xff1a; 解决方法&#xff0c;修改代码&#xff1a; 已开源&#xff1a; 视频生成模型 Zeroscope开源 免费无水印 视频生成模型 Zeroscope_v2_576w 开源 - 腾讯云开发者社区-腾讯云 生成视频代码&#xff1a; import torch fro…...

H3C综合实验

实验拓扑 实验要求 1、按照图示配置IP地址 2、sw1和sw2之间的直连链路配置链路聚合 3、 公司内部业务网段为VLAN10和VLAN20; VLAN 10是市场部&#xff0c;vlan20是技术部&#xff0c;要求对VLAN进行命名以便识别&#xff1b;PC1属于vlan10&#xff0c;PC2属于vlan20&#xf…...

QThread 与QObject::moveToThread在UI中的应用

1. QThread的两种用法 第一种用法就是继承QThread&#xff0c;然后覆写 virtual void run()&#xff0c; 这种用法的缺点是不能利用信号槽机制。 第二种用法就是创建一个线程&#xff0c;创建一个对象&#xff0c;再将对象moveToThread, 这种可以充分利用信号槽机制&#xff…...

安卓逆向案例——X酷APP逆向分析

X酷APP逆向分析 这里介绍一下两种不同的挂载证书的方法。 chls.pro/ssl无法在浏览器中下载证书是什么原因解决方法&#xff1a; 法一 1. 挂载系统分区为读写 使用正确的挂载点来挂载系统分区为读写&#xff1a; su mount -o remount,rw /dev/uijISjR/.magisk/block/syste…...

创新案例|星巴克中国市场创新之路: 2025目标9000家店的挑战与策略

星巴克创始人霍华德舒尔茨&#xff1a;“为迎接中国市场的全面消费复苏&#xff0c;星巴克2025年推进9000家门店计划&#xff0c;将外卖、电商以及家享和外出场景咖啡业务纳入中国新一轮增长计划中。”在面临中国市场同店增长大幅下滑29%背景下&#xff0c;星巴克通过DTC用户体…...

计算机网络 MAC地址表管理

一、理论知识 1.MAC地址表&#xff1a;交换机使用MAC地址表来记录各MAC地址对应的端口&#xff0c;用于帧转发的目的。 2.老化机制&#xff1a;交换机会为每一条MAC地址表项设置老化时间&#xff0c;老化时间到期后未收到该MAC地址报文的表项将被删除&#xff0c;释放资源。 …...

【免费API推荐】:各类API资源免费获取【11】

欢迎来到各类API资源的免费获取世界&#xff01;幂简集成为您提供了一个集合了各种免费API接口的平台。无论您是开发者、数据分析师还是创业者&#xff0c;都可以通过我们的平台轻松免费获取所需的API资源。幂简精心整理了各类API接口&#xff0c;涵盖了不同领域的需求&#xf…...

技术驱动会展:展位导航系统的架构与实现

随着会展行业的快速发展&#xff0c;大型会展中心面临着如何提升参展者体验、提高招商效率的挑战。针对客户反馈的展馆面积大、展位查找困难等问题&#xff0c;维小帮提出一套智慧会展导航解决方案&#xff0c;旨在通过先进的室内导航技术提升会展中心的运营效率和参展者的满意…...

适用于轨道交通专用的板卡式网管型工业以太网交换机

是网管型 CompactPCI板卡式冗余环网交换机。前面板带有6个 10/100/1000Base-T(X)M12接口。后面的CPCI接口有 8个10/100/1000Base-T (X) 以太网接口。 是特别为轨道交通行业EN50155标准要求而设计的坚固型交换机。它同时具有以下特性&#xff1a; ● 支持2线以太网距离扩展端口&…...

excel基本操作

excel 若要取消在数据表中进行的所有筛选 步骤操作&#xff1a; 单击“数据”选项卡。在“排序和筛选”组中&#xff0c;找到“清除”按钮。点击“清除”按钮。 图例&#xff1a; 将文本文件的数据导入到Excel工作表中进行数据处理 步骤&#xff1a; 在Excel中&#xff0c…...

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…...

适合小白学习的项目1906java Web智慧食堂管理系统idea开发mysql数据库web结构java编程计算机网页源码servlet项目

一、源码特点 java Web智慧食堂管理系统是一套完善的信息管理系统&#xff0c;结合java 开发技术和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 前段主要技术 bootstra…...

AI通用大模型不及垂直大模型?各有各的好

​​​​​​​AI时代&#xff0c;通用大模型和垂直大模型&#xff0c;两者孰优孰劣&#xff0c;一直众说纷纭。 通用大模型&#xff0c;聚焦基础层&#xff0c;如ChatGPT、百度文心一言&#xff0c;科大讯飞星火大模型等&#xff0c;都归属通用大模型&#xff0c;它们可以解答…...

农产品价格信息系统小程序

一键掌握市场脉动 &#x1f33e; 引言&#xff1a;为何关注农产品价格&#xff1f; 在当今社会&#xff0c;农产品价格的波动直接关系到农民的收入和消费者的生活成本。因此&#xff0c;及时、准确地掌握农产品价格信息&#xff0c;对于农民合理安排生产、消费者做出购买决策都…...

【LLM-多模态】高效多模态大型语言模型综述

一、结论写在前面 模型规模的庞大及训练和推理成本的高昂&#xff0c;限制了MLLMs在学术界和工业界的广泛应用。因此&#xff0c;研究高效轻量级的MLLMs具有巨大潜力&#xff0c;特别是在边缘计算场景中。 论文深入探讨了高效MLLM文献的领域&#xff0c;提供了一个全面的视角…...

ASP .Net Core创建一个httppost请求并添加证书

ASP .Net Core创建一个httppost请求并添加证书 创建.net Core程序&#xff0c;使用自签名证书&#xff0c;可以处理https的get和post请求。 创建证书 创建自签名证书的流程可以在这里查看&#xff1a; https://blog.csdn.net/GoodCooking/article/details/139815278创建完毕…...

Redis入门篇

目录 传送门一、前言二、NoSQL1、ont only sql&#xff0c;特点&#xff1a;2、NoSQL的四大分类&#xff1a; 三、Redis概念四、五大数据类型: 传送门 SpringMVC的源码解析&#xff08;精品&#xff09; Spring6的源码解析&#xff08;精品&#xff09; SpringBoot3框架&#…...

变电站智能巡检机器人解决方案

我国拥有庞大的电网体系&#xff0c;变电站数量众多&#xff0c;且近年来快速增长。然而目前我国变电站巡检方式仍以人工为主&#xff0c;存在效率低下、监控不全面等问题。变电站通常是一个封闭的系统空间&#xff0c;设备种类繁多、占地面积广阔&#xff0c;这对巡检人员实时…...

Linux Kernel入门到精通系列讲解(QEMU-虚拟化篇) 2.5 Qemu实现RTC设备

1. 概述 上一章节起(5.4小节),我们已经把整个Naruto Pi都跑通了,从BL0到kernel再到Rootfs都通了,目前可以说已经具备学习Linux得基础条件,剩下得都只是添砖加瓦,本小节我们将添加RTC,如果你还没有添加RTC,你可以试试不添加RTC时,Linux的时间戳会很奇怪,加了RTC后,…...

【自动驾驶】通过下位机发送的加速度、角速度计算机器人在世界坐标系中的姿态

文章目录 原始代码全局变量定义逆平方根函数四元数解算函数理论解释四元数加速度计数据归一化计算方向余弦矩阵的第三行计算误差计算并应用积分反馈应用比例反馈积分陀螺仪数据,更新四元数归一化四元数更新姿态数据整体流程原始代码 #define SAMPLING_FREQ 20.0f // 采样频率…...

Python 设计模式(第2版) -- 第四部分(其他设计模式)

Python 设计模式(第2版) 最后介绍下其他设计模式。 模型—视图—控制器&#xff08;MVC&#xff09;-- 复合模式 根据 GoF 的定义&#xff0c;“复合模式将两个或更多模式组合成解决常见或普遍性问题的解决方案”。复合模式不是同时使用的一组模式&#xff0c;而是一个问题的…...

gitlab升级16.11.3-ee

背景 这是事后一段时间补充记录的博客。 升级目的&#xff1a;修补漏洞CVE-2024-4835 未经认证的威胁攻击者能够利用该漏洞在跨站脚本 (XSS) 攻击中&#xff0c;轻松接管受害者账户。 gitlab版本为14.6.2-ee升级至16.11.3-ee 思路 翻阅文档找升级方法及升级版本路径。使用…...

剑指offer 算法题(搜索二维矩阵)

剑指offer 第二题 去力扣里测试算法 思路一&#xff1a; 直接暴力遍历二维数组。 class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {for (unsigned int i{ 0 }; i < matrix.size(); i){for (unsigned int j{ 0 };…...

SaaS平台数据对接为什么要选择API对接?

SaaS平台数据对接是指将一个或多个SaaS平台中的数据集成到其他应用或平台中的过程。在当前的数字化时代&#xff0c;企业越来越倾向于使用SaaS平台来管理他们的业务和数据。然而&#xff0c;这些数据通常散布在不同的SaaS平台中&#xff0c;这对于企业数据的整合和分析来说可能…...

力扣136. 只出现一次的数字

Problem: 136. 只出现一次的数字 文章目录 题目描述思路复杂度Code 题目描述 思路 由于题目要求使用线性时间复杂度和常量级的空间复杂度&#xff0c;再加上找重复元素这个特性&#xff0c;我们可以想到使用位运算来求解&#xff1a; 1.任何数与其本身异或得0&#xff0c;任何…...

重学java 74.Lombok的使用

少点心气&#xff0c;多点干劲 —— 24.6.18 一、lombok的安装使用 1.作用: 简化javabean开发 2.使用: a.下插件 ->如果是idea2022不用下载了,自带 b.导lombok的jar包 安装教程&#xff1a; http://t.csdnimg.cn/wq9MM c.修改设置 二、lombok的介绍 Lombok通过增加一…...

数据结构6---树

一、定义 树(Tree)是n(n>0)个结点的有限集。当n0时成为空树,在任意一棵非空树中: 1、有且仅有一个特定的称为根(Root)的结点; 2、当n>1时,其余结点可分为m(m>日)个互不相交的有限集T1、T2、...、 Tm&#xff0c;其中每一个集合本身又是一棵树&#xff0c;并且称为根的…...

一键制作,打造高质量的数字刊物

随着数字化时代的到来&#xff0c;数字刊物已经成为信息传播的重要载体。它以便捷、环保、互动性强等特点&#xff0c;受到了越来越多人的青睐。然而&#xff0c;如何快速、高效地制作出高质量的数字刊物&#xff0c;成为许多创作者面临的难题。今天&#xff0c;教大家一个制作…...

Java面试题:对比继承Thread类和实现Runnable接口两种创建线程的方法,以及它们的优缺点

Java 中创建线程有两种主要的方法&#xff1a;继承 Thread 类和实现 Runnable 接口。下面我将分别介绍这两种方法&#xff0c;并对比它们的优缺点。 继承 Thread 类 方法&#xff1a; 创建一个继承自 Thread 的子类。重写 Thread 类的 run 方法。创建子类的实例并调用 start…...

编译原理-各章典型题型+思路求解

第2章文法和语言习题 基础知识&#xff1a; 思路&#xff1a; 基础知识&#xff1a; 思路&#xff1a; 基础知识&#xff1a; 编译原理之 短语&直接短语&句柄 定义与区分_编译原理短语,直接短语,句柄-CSDN博客 思路&#xff1a; 题目&#xff1a; 基础解释&#xff1a…...

【绝对有用】C++ vector排序

在 C 中&#xff0c;有多种方法可以对向量&#xff08;即 std::vector&#xff09;进行排序。最常用的方法是使用标准库中的 std::sort 函数。以下是一些例子&#xff1a; 使用 std::sort 函数 std::sort 函数是标准库 <algorithm> 中的一个函数&#xff0c;可以对向量…...

linux——VScode安装

方法一&#xff1a;使用snap一键安装 Snap Store 是 Ubuntu、Debian、Fedora 和其他几个 Linux 发行版中的一个应用商店&#xff0c;提供了数千个应用程序和工具的安装。Snap Store 使用 Snap 包格式&#xff0c;这是一种通用的 Linux 软件包格式&#xff0c;使得在不同的 Lin…...

X-LoRA:高效微调 LoRA 系列,实现不同领域知识专家混合模型

&#x1f4dc; 文献卡 X-LoRA: Mixture of Low-Rank Adapter Experts, a Flexible Framework for Large Language Models with Applications in Protein Mechanics and Molecular Design作者: Eric L. Buehler; Markus J. BuehlerDOI: 10.48550/arXiv.2402.07148摘要:We report…...

基于卷积神经网络的目标检测

卷积神经网络基础知识 1.什么是filter 通常一个6x6的灰度图像&#xff0c;构造一个3*3的矩阵&#xff0c;在卷积神经网络中称之为filter,对&#xff16;x6的图像进行卷积运算。 2.什么是padding 假设输出图像大小为nn与过滤器大小为ff&#xff0c;输出图像大小则为(n−f1)∗(…...

Mysqld数据库管理

一.Mysqld数据库类型 常用的数据类型 int 整型 无符号[0-4294967296&#xff08;2的32次方&#xff09;-1]&#xff0c;有符号[-2147483648&#xff08;2的31次方&#xff09;-2147483647]float单精度浮点 4字节32位double双精度浮点 8字节64位char固定长度的字符类型…...

Wifi通信协议:WEP,WPA,WPA2,WPA3,WPS

前言 无线安全性是保护互联网安全的重要因素。连接到安全性低的无线网络可能会带来安全风险&#xff0c;包括数据泄露、账号被盗以及恶意软件的安装。因此&#xff0c;利用合适的Wi-Fi安全措施是非常重要的&#xff0c;了解WEP、WPA、WPA2和WPA3等各种无线加密标准的区别也是至…...

开源【汇总】

开源【汇总】 前言版权推荐开源【汇总】最后 前言 先占个位 2024-6-21 21:29:33 以下内容源自《【创作模板】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN日星月云 博客主页是https://jsss-1.blog.csdn.net 禁止其他平台发…...

英文字母表

目录 一 设计原型 二 后台源码 一 设计原型 二 后台源码 namespace 英文字母表 {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){foreach (var item in panel1.Controls){if (item ! null)…...

Redis缓存穿透

缓存穿透&#xff1a; 查询一个不存在的数据&#xff0c;mysql查询不到数据也不会直接写入缓存&#xff0c;就会导致每次请求都查数据库。 方法一&#xff1a; 方法二&#xff1a; 布隆过滤器&#xff1a; 简单来说就是一个二进制数组&#xff0c;用0和1来判断数组中是否存在…...

SHELL脚本学习(十一)正则表达式

一、锚点字符 1.1 锚点行首 脱字符(^)指出行首位置 $ cat < file1 test line1 test line2 test line3 line4 test#打印所有包括文本 test的行 $ sed -n /test/p file1 test line1 test line2 test line3 line4 test#打印所有以test为首的行 $ sed -n /^test/p file1 test…...

Leetcode Java学习记录——代码随想录哈希表篇

文章目录 哈希表几种哈希实现 Java数组HashSetmap方法charAt()toCharArray()for 遍历长度 哈希表 当需要快速判断一个元素是否出现在集合里的时候&#xff0c;就要用到哈希表。 无限循环就意味着重复出现。 几种哈希实现 数组&#xff1a;大小固定set&#xff1a;只存keymap…...