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

Numpy常用库方法总结

numpy的底层是ndarray,也就是矩阵结构

对于ndarray结构来说,里面所有的元素必须是同一类型的 如果不是的话,会自动的向下进行转换

list = [1,2,3,4,5]
array = np.array(list)
array输出:array([1, 2, 3, 4, 5])

1.1 ndarray基本属性操作

  1. type(array):

    • 获取变量 array 的数据类型。

    • 在这个例子中,array 是一个 NumPy 数组,所以返回的类型是 numpy.ndarray

  2. array.dtype:

    • 获取数组 array 中元素的数据类型。

    • 在这个例子中,数组的元素类型是 int32

  3. array.itemsize:

    • 用于获取数组 array 中每个元素的字节大小。

    • 在这个例子中,每个元素占用 4 个字节。

  4. array.shape:

    • 用于获取数组 array 的形状。

    • 在这个例子中,返回 (5,),表示它是一个包含 5 个元素的一维数组。

  5. array.size:

    • 用于获取数组 array 中元素的总数。

    • 在这个例子中,返回5。

  6. array.ndim:

    • 用于获取数组 array 的维度数。

    • 在这个例子中,数组是一维的,所以返回 1。

  7. array.fill(0):

    • 用于将数组 array 中的所有元素值设置为 0。

    • 在这个例子中,执行完这个操作后,数组 array 中的所有元素都被填充为 0。

1.2 索引和切片

同Python,索引用逗号(低维到高维),切片用冒号(左到右)

array = np.array([[1,2,3],[4,5,6],[7,8,9]])array[1,2] --> 6
array[1:2] ---> array([[4, 5, 6]])
array[1,0:2] --> array([4, 5])

1.3 array.copy()

实现ndarray的深拷贝

1.4 bool类型索引

基于数组中元素的布尔值(True 或 False)来选择数组的子集

myarray = np.array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90])mask = np.array([0,1,0,1,0,2,0,1,3,4],dtype=bool)myarray[mask] ---> array([10, 30, 50, 70, 80, 90])

1.5 np.where()

找出满足特定条件的元素的索引

np.where(myarray > 20) ---> array([3, 4, 5, 6, 7, 8, 9], dtype=int64)

1.6 创建元素数据类型

使用dtype

np.array([1,2,3,4,5],dtype=np.float32)np.array([1,2.2,'ss'],dtype = object) np.array([0,1,0,1,0,2,0,1,3,4],dtype=bool)

1.6.1 数值类型转换

法一:np.asarray()

返回新的ndarray

myarray = np.array([1,2,3,4,5])
myarray2 = np.asarray(myarray,dtype = np.float32)
法一:.astype()

在原有ndarray上进行转变

myarray.astype(np.float32)

1.7 array数组的数值计算

myarray = np.array([[1,2,3],[4,5,6]])

1.7.1 求和

多维数组指定axis

np.sum(myarray,axis=0) ---> array([5, 7, 9])
myarray.sum(axis=0) ---> array([5, 7, 9])
np.sum(myarray,axis=1) ---> array([6, 15])
np.sum(myarray,axis=-1) ---> array([6, 15])

1.7.2 求积

myarray.prod() ---> 720
myarray.prod(axis=0) ---> array([ 4, 10, 18])

1.7.3 求最小/最大

myarray.min(axis=1) ---> array([1, 4])
myarray.max(axis=0) ---> array([4, 5, 6])
myarray.argmax(axis=0) ---> array([1, 1, 1], dtype=int64)

1.7.4 求均值,方差,标准差

myarray.mean(axis=0) ---> array([2.5, 3.5, 4.5])
myarray.std(axis=0) #标准差 ---> array([1.5, 1.5, 1.5])
myarray.var() #方差 ---> 2.9166666666666665

1.7.5 clip()

将数组中的元素限制在指定的最小值和最大值之间。如果数组中的元素超出了这个范围,它们将被设置为最接近的边界值。这个方法不会修改原始数组,而是返回一个新的数组。

myarray.clip(2,4) ---> array([[2, 2, 3],[4, 4, 4]])

1.7.6 精度

float_array = np.array([1.4021013 , 1.27661159, 1.58309714, 1.76959385, 1.50449721,1.24388527, 1.6721506 , 1.04341644, 1.09239404, 1.26755543])
1.7.6.1 四舍五入
float_array.round() ---> array([1., 1., 2., 2., 2., 1., 2., 1., 1., 1.])
1.7.6.2 精确小数点后几位
np.sort(myarray, axis=0) ---> array([[0.3, 3.5, 1.3],[1.3, 5.2, 2.6]])
float_array.round(decimals=1) ---> array([1.4, 1.3, 1.6, 1.8, 1.5, 1.2, 1.7, 1. , 1.1, 1.3])

1.8 排序

myarray = np.array([[1.3,3.5,2.6],[0.3,5.2,1.3]])

1.8.1 np.sort()

返回一个新的、元素按升序排列的数组。默认情况下,进行一维排序

np.sort(myarray) ---> array([[1.3, 2.6, 3.5],[0.3, 1.3, 5.2]])

指定轴

np.sort(myarray,axis=0) ---> array([[0.3, 3.5, 1.3],[1.3, 5.2, 2.6]])

1.8.2 np.argsort()

返回的是原数组元素排序后的对应位置索引

np.argsort(myarray) ---> array([[0, 2, 1],[0, 2, 1]], dtype=int64)

1.8.3 np.searchsorted()

返回values数组中能够插入到myarray2中位置索引(myarray2必须是排好序的

myarray2 = array([ 0.        ,  1.11111111,  2.22222222,  3.33333333,  4.44444444, 5.55555556,  6.66666667,  7.77777778,  8.88888889, 10.        ])
values = np.array([2.4,3.5,8.6])
np.searchsorted(myarray2,values) ---> array([3, 4, 8], dtype=int64)

1.8.4 np.lexsort()

使用字典序排序对数组 tang_array 进行多键排序。

首先根据第一个键排序,如果第一个键相同,则根据第二个键排序。

myarray = np.array([[1,0,6],[1,7,0],[2,3,1],[2,4,0]])
index = np.lexsort((-1*myarray[:,0],myarray[:,2])) ---> array([3, 1, 2, 0], dtype=int64)
myarray = myarray[index] ---> array([[2, 4, 0],[1, 7, 0],[2, 3, 1],[1, 0, 6]])

1.9 数组形状操作

myarray = array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

1.9.1 改变形状

总体大小不改变

myarray.reshape(1,10) ---> array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])

1.9.2 改变维度

1.9.2.1 扩维

使用np.newaxis

myarray = array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) ---> (10,)
myarray2 = myarray[np.newaxis,:] ---> (1,10)
myarray3 = myarray[:,np.newaxis,np.newaxis] ---> (10,1,1)
1.9.2.2 降维
.squeeze()

把空维度压缩

myarray4 = myarray3.squeeze() ---> (10,)
.flatten()

将多维转变成1维,不改变原来数组维度

a --> array([[ 123,  456,  678],[3214,  456,  134]])a.flatten() --> array([ 123,  456,  678, 3214,  456,  134])
.ravel()

将多维转变成1维,改变原来数组维度

a.ravel() --> array([ 123,  456,  678, 3214,  456,  134])

1.9.3 转置

.transpose() 或 .T

myarray = array([[0, 1, 2, 3, 4],[5, 6, 7, 8, 9]])
myarray.transpose() ---> array([[0, 5],[1, 6],[2, 7],[3, 8],[4, 9]])
myarray.T ---> array([[0, 5],[1, 6],[2, 7],[3, 8],[4, 9]])

1.10 数组的连接

a = np.array([[123,456,678],[3214,456,134]])
b = np.array([[122,4126,2578],[3114,450,11]])

1.10.1 np.concatenate()

np.concatenate((a,b)) 
输出:array([[ 123,  456,  678],[3214,  456,  134],[ 122, 4126, 2578],[3114,  450,   11]])np.concatenate((a,b),axis=1)
输出:array([[ 123,  456,  678,  122, 4126, 2578],[3214,  456,  134, 3114,  450,   11]])

1.10.2 np.vstack()

按行堆叠数组

np.vstack((a,b))
输出:array([[ 123,  456,  678],[3214,  456,  134],[ 122, 4126, 2578],[3114,  450,   11]])

1.10.3 np.hstack()

按列堆叠数组

np.hstack((a,b))
输出:array([[ 123,  456,  678,  122, 4126, 2578],[3214,  456,  134, 3114,  450,   11]])

1.11 构造数组

1.11.1 np.arange()

三个参数

  1. start:序列的起始值(包含)。默认为 0。

  2. stop:序列的结束值(不包含)。必须指定。

  3. step:序列的步长。默认为 1。

np.arange(10) --> array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.arange(1,10,2) --> array([1, 3, 5, 7, 9])
np.arange(2,20,2,dtype=np.float32) --> array([ 2.,  4.,  6.,  8., 10., 12., 14., 16., 18.], dtype=float32)

 1.11.2 np.linspace()

生成等间隔数字

np.linspace(0,10,5) --> array([ 0. ,  2.5,  5. ,  7.5, 10. ])

1.11.3 np.logspace()

生成对数尺度上等间隔数字,默认以10为底

np.logspace(0,10,5) --> array([ 1.        ,  1.77827941,  3.16227766,  5.62341325, 10.        ])

1.11.4 np.meshgrid() 

生成坐标矩阵。

接受多个一维数组作为输入,并返回相同数量的二维数组。

生成两个二维数组 XY,其中 X 的每一行都是 x,而 Y 的每一列都是 y

x = np.linspace(-10,10,5) --> array([-10.,  -5.,   0.,   5.,  10.])
y= np.linspace(-10,10,5) --> array([-10.,  -5.,   0.,   5.,  10.])
x,y = np.meshgrid(x,y)x:array([[-10.,  -5.,   0.,   5.,  10.],[-10.,  -5.,   0.,   5.,  10.],[-10.,  -5.,   0.,   5.,  10.],[-10.,  -5.,   0.,   5.,  10.],[-10.,  -5.,   0.,   5.,  10.]])y:array([[-10., -10., -10., -10., -10.],[ -5.,  -5.,  -5.,  -5.,  -5.],[  0.,   0.,   0.,   0.,   0.],[  5.,   5.,   5.,   5.,   5.],[ 10.,  10.,  10.,  10.,  10.]])

1.11.5 np.r_[]

允许使用类似于 Python 切片的语法来创建行向量

np.r_[0:10:4] <==> np.arange(0, 10, 4) --> array([0, 4, 8])

1.11.6 np.c_[]

允许使用类似于 Python 切片的语法来创建列向量

np.c_[0:10:1] 输出:array([[0],[1],[2],[3],[4],[5],[6],[7],[8],[9]])

1.11.7 zeros ()

np.zeros(3)
np.zeros((3,3)) #往里传元组

1.11.8 ones()

np.ones((2,4,5)) * 5输出:array([[[5., 5., 5., 5., 5.],[5., 5., 5., 5., 5.],[5., 5., 5., 5., 5.],[5., 5., 5., 5., 5.]],[[5., 5., 5., 5., 5.],[5., 5., 5., 5., 5.],[5., 5., 5., 5., 5.],[5., 5., 5., 5., 5.]]])

1.11.9 empty()

创建一个指定形状和数据类型的未初始化数组。这意味着数组中的元素是随机的。

np.empty(5) 输出:array([7.74860419e-304, 7.74860419e-304, 7.74860419e-304, 7.74860419e-304,7.74860419e-304])

1.11.10 fill()

原地操作,直接将数组 a 中的所有元素值设置为 1

a.fill(1)

1.11.11 zeros_like() / ones_like()

zeros_like():创建一个与 tarray 形状和数据类型相同,但所有元素都是 0 的数组。

ones_like():创建一个与 tarray 形状和数据类型相同,但所有元素都是 1 的数组。

np.ones_like(tarray)

1.11.12 identity()

创建一个的n x n的单位矩阵

np.identity(5) 输出:array([[1., 0., 0., 0., 0.],[0., 1., 0., 0., 0.],[0., 0., 1., 0., 0.],[0., 0., 0., 1., 0.],[0., 0., 0., 0., 1.]])

1.12 运算

x = np.array([5,5])
y = np.array([2,2])

1.12.1 multiply()

矩阵各元素相乘

np.multiply(x,y) --> array([10, 10])

1.12.2 dot()

矩阵内积

np.dot(x,y) --> 20

1.12.3 x*y

x是一维,y不限

y是一维,x不限

x= np.array([1,2,3])
y = np.array([[1,2,3],[4, 5,6]])
print(y*x)输出:[[ 1  4  9][ 4 10 18]]

1.12.4 logical_and / logical_or / logical_not

  1. np.logical_and(x, y)

    • 计算两个数组 xy 的逐元素逻辑与(AND)操作。

    • 结果数组中,只有当 xy 对应位置的元素都为 True 时,结果才为 True

  2. np.logical_or(x, y)

    • 计算两个数组 xy 的逐元素逻辑或(OR)操作。

    • 结果数组中,只要 xy 对应位置的元素有一个为 True,结果就为 True

  3. np.logical_not(y)

    • 计算数组 y 的逐元素逻辑非(NOT)操作。

    • 结果数组中,y 中为 True 的元素变为 False,为 False 的元素变为 True

1.13  随机模块

1.13.1 np.random.rand()

生成一个在区间 [0, 1) 内均匀分布的样本数组。

np.random.rand(3, 4) #生成一个 3x4 的数组。

1.13.2 np.random.randint()

生成一个给定范围内的随机整数数组。

这个函数接受至少两个参数:lowhigh,表示生成随机整数的范围(包括 low,不包括 high)。

np.random.randint(10,size=(5,4))输出:array([[1, 9, 1, 3],[1, 3, 2, 6],[3, 1, 2, 1],[1, 4, 6, 4],[7, 6, 9, 0]])

1.13.3 np.random.random_sample()

这个函数是 np.random.rand() 的别名,两者功能完全相同。

1.13.4 np.random.normal()

生成一个给定均值和标准差的正态分布样本数组。

mu, sigma = 0,0.1
#生成一个包含 10 个服从均值为 0、标准差为 0.1 的正态分布的随机数的数组
np.random.normal(mu,sigma,10) 

1.13.5 np.random.randn()

生成一个或多个服从标准正态分布(均值为 0,标准差为 1)的随机样本值

np.random.randn(3, 4)

1.13.6 np.set_printoptions()

允许自定义数组打印时的格式,例如,你可以设置打印时显示的最大行数、最大列数、浮点数的精度等。

np.set_printoptions(precision=2)
mu, sigma = 0,0.1
np.random.normal(mu,sigma,10)输出:array([-0.09,  0.2 ,  0.04,  0.04, -0.16,  0.1 ,  0.09,  0.06, -0.07, -0.28])

1.13.7 np.random.shuffle()

打乱数组中元素顺序

myarray = np.arange(10) --> array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.random.shuffle(myarray) --> array([9, 7, 2, 4, 0, 5, 6, 1, 3, 8])

1.13.8 随机种子

通过指定一个种子值,你可以确保每次运行代码时生成的随机数序列是相同的。

#在使用random前加上
np.random.seed(1)

1.14 读写数据

1.14.1 读txt文件数据

%%writefile practice.txt
1 2 3 4 5 6
7 8 9 10 11 12
with open('tang.txt') as f:for line in f:files = line.split()cur_data = [float(x) for x in files]data.append(cur_data)
data = np.array(data)

等价于

data = np.loadtxt('practice.txt')

-------------------------------------------------------------------------------------------------------------------------------- 

%%writefile practice2.txt
a,b,c,d,e,f
1, 2, 3, 4, 5, 6
7, 8, 9, 10, 11, 12
  • skiprows:去掉几行
  • delimiter=',':分隔符
  • usecols = (0,1,4):指定使用哪几列
data = np.loadtxt('practice2.txt',delimiter=',',skiprows=1,usecols=(1))输出:array([2., 8.])

保存数据到文件

np.savetxt('practice3.txt',data,fmt='%.2f',delimiter=',')

1.14.2 读npy文件数据

写入文件

array1 = np.array([[1,2,3],[4,5,6]])
np.save('array1.npy',array1)

读取文件

array = np.load('array1.npy')输出:array([[1, 2, 3],[4, 5, 6]])

压缩文件

array2 = np.arange(10)
np.savez('arrayz.npz',a=array1,b=array2)

读取压缩文件

data = np.load('tang.npz')
data['a'] --> array([[1, 2, 3],[4, 5, 6]])
data['b'] --> array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

相关文章:

Numpy常用库方法总结

numpy的底层是ndarray&#xff0c;也就是矩阵结构 对于ndarray结构来说&#xff0c;里面所有的元素必须是同一类型的 如果不是的话&#xff0c;会自动的向下进行转换 list [1,2,3,4,5] array np.array(list) array输出&#xff1a;array([1, 2, 3, 4, 5]) 1.1 ndarray基本…...

YOLOV8 OBB 海思3516训练流程

YOLOV8 OBB 海思3516训练流程 目录 1、 下载带GPU版本的torch(可选) 1 2、 安装 ultralytics 2 3、 下载pycharm 社区版 2 4、安装pycharm 3 5、新建pycharm 工程 3 6、 添加conda 环境 4 7、 训练代码 5 9、配置Ymal 文件 6 10、修改网络结构 9 11、运行train.py 开始训练模…...

[MySQL] 事务管理(二) 事务的隔离性底层

事务的隔离性底层 1.数据库并发的场景2.读-写2.1MVCC三个变量2.1.1 3个记录隐藏列字段2.1.2 undo日志 模拟MVCCselect 的读取2.1.3 Read View&#xff08;读视图&#xff09; 3.RR与RC的区别 1.数据库并发的场景 读-读&#xff1a;不存在问题&#xff0c;也不需要并发控制读-写…...

20、.NET SDK概述

.NET SDK&#xff08;Software Development Kit&#xff09; 是微软提供的一套开发工具包&#xff0c;用于构建、运行和管理基于 .NET 平台的应用程序。它包含了一组丰富的工具、库和运行时环境&#xff0c;支持开发者在多种操作系统&#xff08;如 Windows、Linux 和 macOS&am…...

Go:包和 go 工具

引言 通过对关联特性分类&#xff0c;组成便于理解和修改的单元&#xff0c;使包与程序其他包保持独立&#xff0c;助力大型程序的设计与维护 。模块化让包可在不同项目共享、复用、发布及全球范围使用。 每个包定义不同命名空间作为标识符&#xff0c;关联具体包&#xff0c…...

18-21源码剖析——Mybatis整体架构设计、核心组件调用关系、源码环境搭建

学习视频资料来源&#xff1a;https://www.bilibili.com/video/BV1R14y1W7yS 文章目录 1. 架构设计2. 核心组件及调用关系3. 源码环境搭建3.1 测试类3.2 实体类3.3 核心配置文件3.4 映射配置文件3.5 遇到的问题 1. 架构设计 Mybatis整体架构分为4层&#xff1a; 接口层&#…...

冒泡排序、插入排序、快速排序、堆排序、希尔排序、归并排序

目录 冒泡排序插入排序快速排序(未优化版本)快速排序(优化版本)堆排序希尔排序归并排序各排序时间消耗对比 冒泡排序 冒泡排序核心逻辑就是对数组从第一个位置开始进行遍历&#xff0c;如果发现该元素比下一个元素大&#xff0c;则交换位置&#xff0c;如果不大&#xff0c;就…...

Docker Compose 中配置 Host 网络模式

在 Docker Compose 中配置 Host 网络模式时&#xff0c;需通过 network_mode 参数直接指定容器使用宿主机的网络栈。以下是具体配置方法及注意事项&#xff1a; 1. 基础配置示例 在 docker-compose.yml 文件中&#xff0c;为需要启用 Host 模式的服务添加 network_mode: "…...

HTML、CSS 和 JavaScript 常见用法及使用规范

一、HTML 深度剖析 1. 文档类型声明 HTML 文档开头的 <!DOCTYPE html> 声明告知浏览器当前文档使用的是 HTML5 标准。它是文档的重要元信息&#xff0c;能确保浏览器以标准模式渲染页面&#xff0c;避免怪异模式下的兼容性问题。 2. 元数据标签 <meta> 标签&am…...

Elasticsearch 索引数据量激增的应对与优化:从原理到部署实践

Elasticsearch&#xff08;ES&#xff09;作为一款强大的分布式搜索和分析引擎&#xff0c;广泛应用于日志分析、全文搜索和实时数据处理等场景。然而&#xff0c;随着数据量激增&#xff0c;索引可能面临性能瓶颈&#xff0c;如写入变慢、查询延迟高或存储成本上升。如何有效应…...

CD27.【C++ Dev】类和对象 (18)友元和内部类

目录 1.友元 友元函数 几个特点 友元类 格式 代码示例 2.内部类(了解即可) 计算有内部类的类的大小 分析 注意:内部类不能直接定义 内部类是外部类的友元类 3.练习 承接CD21.【C Dev】类和对象(12) 流插入运算符的重载文章 1.友元 友元函数 在CD21.【C Dev】类和…...

QT安装详细步骤

下载 清华源 &#xff1a; 清华源 1. 2. 3. 4....

Unity游戏多语言工具包

由于一开始的代码没有考虑多语言场景&#xff0c;导致代码中提示框和UI显示直接用了中文&#xff0c;最近开始提取代码的中文&#xff0c;提取起来太麻烦&#xff0c;所以拓展了之前的多语言包&#xff0c;降低了操作复杂度。最后把工具代码提取出来到单独项目里面&#xff0c;…...

实验三 I/O地址译码

一、实验目的 掌握I/O地址译码电路的工作原理。 二、实验电路 实验电路如图1所示&#xff0c;其中74LS74为D触发器&#xff0c;可直接使用实验台上数字电路实验区的D触发器&#xff0c;74LS138为地址译码器&#xff0c; Y0&#xff1a;280H&#xff5e;287H&…...

视觉语言导航(VLN):连接语言、视觉与行动的桥梁

文章目录 1. 引言&#xff1a;什么是VLN及其重要性&#xff1f;2. VLN问题定义3. 核心挑战4. 基石&#xff1a;关键数据集与模拟器5. 评估指标6. 主要方法与技术演进6.1 前CLIP时代&#xff1a;奠定基础6.2 后CLIP时代&#xff1a;视觉与语言的统一 7. 最新进展与前沿趋势 (202…...

计算机网络中科大 - 第7章 网络安全(详细解析)-以及案例

目录 &#x1f6e1;️ 第8章&#xff1a;网络安全&#xff08;Network Security&#xff09;优化整合笔记&#x1f4cc; 本章学习目标 一、网络安全概念二、加密技术&#xff08;Encryption&#xff09;1. 对称加密&#xff08;Symmetric Key&#xff09;2. 公钥加密&#xff0…...

2026《数据结构》考研复习笔记一(C++基础知识)

C基础知识复习 一、数据类型二、修饰符和运算符三、Lambda函数和表达式四、数学函数五、字符串六、结构体 一、数据类型 1.1基本类型 基本类型 描述 字节&#xff08;位数&#xff09; 范围 char 字符类型&#xff0c;存储ASCLL字符 1&#xff08;8位&#xff09; -128…...

XCTF-web(四)

unserialize3 需要反序列化一下&#xff1a;O:4:“xctf”:2:{s:4:“flag”;s:3:“111”;} php_rce 题目提示rce漏洞&#xff0c;测试一下&#xff1a;?s/Index/\think\app/invokefunction&functioncall_user_func_array&vars[0]phpinfo&vars[1][]1 flag&#xff1…...

在Vue项目中查询所有版本号为 1.1.9 的依赖包名 的具体方法,支持 npm/yarn/pnpm 等主流工具

以下是 在Vue项目中查询所有版本号为 1.1.9 的依赖包名 的具体方法&#xff0c;支持 npm/yarn/pnpm 等主流工具&#xff1a; 一、使用 npm 1. 直接过滤依赖树 npm ls --depth0 | grep "1.1.9"说明&#xff1a; npm ls --depth0&#xff1a;仅显示直接依赖&#xf…...

若依微服务版启动小程序后端

目录标题 本地启动&#xff0c;dev对应 nacos里的 xxx-xxx-dev配置文件 本地启动&#xff0c;dev对应 nacos里的 xxx-xxx-dev配置文件...

莒县第六实验小学:举行“阅读世界 丰盈自我”淘书会

4月16日&#xff0c;莒县第六实验小学校园内书香四溢、笑语盈盈&#xff0c;以“阅读世界 丰盈自我”为主题的第二十四届读书节之“淘书会”活动火热开启。全校师生齐聚一堂&#xff0c;以书会友、共享阅读之乐&#xff0c;为春日校园增添了一抹浓厚的文化气息。 活动在悠扬的诵…...

国产数据库与Oracle数据库事务差异分析

数据库中的ACID是事务的基本特性&#xff0c;而在Oracle等数据库迁移到国产数据库国产中&#xff0c;可能因为不同数据库事务处理机制的不同&#xff0c;在迁移后的业务逻辑处理上存在差异。本文简要介绍了事务的ACID属性、事务的隔离级别、回滚机制和超时机制&#xff0c;并总…...

C++学习记录:

今天我们来学习一门新的语言&#xff0c;也是C语言最著名的一个分支语言&#xff1a;C。 在C的学习中&#xff0c;我们主要学习的三大组成部分&#xff1a;语法、STL、数据结构。 C的介绍 C的历史可追溯至1979年&#xff0c;当时贝尔实验室的本贾尼斯特劳斯特卢普博士在面对复杂…...

等离子体浸没离子注入(PIII)

一、PIII 是什么&#xff1f;基本原理和工艺 想象一下&#xff0c;你有一块金属或者硅片&#xff08;就是做芯片的那种材料&#xff09;&#xff0c;你想给它的表面“升级”&#xff0c;让它变得更硬、更耐磨&#xff0c;或者有其他特殊功能。怎么做呢&#xff1f;PIII 就像是用…...

LeetCode-16.最接近的三数之和 C++实现

一 题目描述 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数&#xff0c;使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解 示例 1&#xff1a; 输入&#xff1a;nums [-1,2,1,-4], target 1 输出&…...

【机器学习】每日一讲-朴素贝叶斯公式

文章目录 **一、朴素贝叶斯公式详解****1. 贝叶斯定理基础****2. 从贝叶斯定理到分类任务****3. 特征独立性假设****4. 条件概率的估计** **二、在AI领域的作用****1. 文本分类与自然语言处理&#xff08;NLP&#xff09;****2. 推荐系统****3. 医疗与生物信息学****4. 实时监控…...

C 语言中的 volatile 关键字

1、概念 volatile 是 C/C 语言中的一个类型修饰符&#xff0c;用于告知编译器&#xff1a;该变量的值可能会在程序控制流之外被意外修改&#xff08;如硬件寄存器、多线程共享变量或信号处理函数等&#xff09;&#xff0c;因此编译器不应对其进行激进的优化&#xff08;如缓存…...

Python自学第1天:变量,打印,类型转化

突然想学Python了。经过Deepseek的推荐&#xff0c;下载了一个Python3.12安装。安装过程请自行搜索。 乖乖从最基础的学起来&#xff0c;废话不说了&#xff0c;上链接&#xff0c;呃&#xff0c;打错了&#xff0c;上知识点。 变量的定义 # 定义一个整数类型的变量 age 10#…...

探索鸿蒙应用开发:ArkTS应用执行入口揭秘

# 探索鸿蒙应用开发&#xff1a;ArkTS应用执行入口揭秘 在鸿蒙应用开发的领域中&#xff0c;ArkTS作为声明式开发语言&#xff0c;为开发者们带来了便捷与高效。对于刚接触鸿蒙开发的小伙伴来说&#xff0c;搞清楚ArkTS应用程序的执行入口是迈向成功开发的关键一步。今天&…...

idea中提高编译速度研究

探索过程&#xff1a; 有三种情况&#xff1a; 第一种&#xff1a; idea中用eclipse编译器编译springboot项目&#xff0c;然后debug启动Application报错找不到类。 有待继续研究。 第二种&#xff1a; idea中用javac编译器编译springboot项目&#xff0c;重新构建用时&a…...