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

一、Numpy入门


Numpy入门

  • 前言
  • 一、numpy简介
  • 二、Numpy的ndarray属性
    • 2.1. 直接用 .属性的方法实现
    • 2.2. 直接函数的方法实现
  • 三、Numpy的ndarray的创建
    • 3.1. ndarray介绍
    • 3.2. 数组形式
    • 3.3. zeros()、ones() 、 empty()
    • 3.4. arange(),类似 python 的 range() ,创建一个一维 ndarray 数组。
    • 3.5. matrix(),是 ndarray 的子类,只能生成 2 维的矩阵
    • 3.6. 创建随机数矩阵
    • 3.7. 等比数列
    • 3.8. 等差数列
  • 四、Numpy的内置函数
    • 4.1. 基本函数
    • 4.2. 统计函数
    • 4.3. 比较函数
    • 4.4. 去重函数
    • 4.5. 排序函数
  • 五、Numpy运算
    • 5.1. 加减、点乘、除法
    • 5.2. 矩阵相乘(外积)
  • 总结


前言

  • 学习机器学习之前,我们需要学习python中一些跟计算有关的库,例如numpy、pandas。接下里我们先了解numpy中的相关知识。

一、numpy简介

  • NumPy(Numerical Python)是Python数据分析必不可少的第三方库。
  • NumPy重在数值计算,主要用于多维数组(矩阵)处理的库。用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多。
  • 主要功能:
    • 高性能科学计算和数据分析的基础包
    • ndarray,多维数组,具有矢量运算能力,快速、节省空间
    • 矩阵运算,无需循环,可完成类似Matlab中的矢量运算
    • 用于读写磁盘数据的工具以及用于操作内存映射文件的工具

二、Numpy的ndarray属性

2.1. 直接用 .属性的方法实现

shape(示例):

# 导包
import numpy as np
# 创建numpy的数组.   
# arange(15)       等价于python的 range(15), 即: 获取 0 ~ 14的整数
# reshape(3, 5)    把上述数据封装到 3个一维数组中, 每个一维数组的长度为: 5,  然后把三个一维数组封装成1个 二维数组.
arr = np.arange(15).reshape(3, 5)print(f'数组的维度: {arr.shape}')         # (3, 5)

ndim(示例):

print(f'数组轴的个数: {arr.ndim}')        # 几维数组, 轴就是几,  2  

dtype(示例):

print(f'数组元素类型: {arr.dtype}')       # int64 

itemsize(示例):

print(f'数组每个元素的占用字节数: {arr.itemsize}')    # 8

size(示例):

print(f'数组元素个数: {arr.size}')        # 15

type(示例):

print(f'数组类型: {type(arr)}')           # <class 'numpy.ndarray'>

2.2. 直接函数的方法实现

代码如下(示例):

# 上述的 shape, ndim, size属性 可以 函数写法 实现.
# 格式: np.函数名(数组)
print(f'数组的维度: {np.shape(arr)}')         # (3, 5)   3个元素(一维数组), 每个元素(一维数组)又有5个元素(值)
print(f'数组轴的个数: {np.ndim(arr)}')        # 几维数组, 轴就是几,  2  
print(f'数组元素个数: {np.size(arr)}')        # 15 
print(f'数组类型: {type(arr)}')               # <class 'numpy.ndarray'>

三、Numpy的ndarray的创建

3.1. ndarray介绍

  • NumPy数组是一个多维的数组对象(矩阵),称为 ndarray(N-Dimensional Array)
  • 具有矢量算术运算能力和复杂的广播能力,并具有执行速度快和节省空间的特点
  • 注意:ndarray的下标从0开始,且数组里的所有元素必须是相同类型。

3.2. 数组形式

代码如下(示例):

import numpy as np 
a = np.array([2, 3, 4])
print('数组a元素类型: ', a)      # [2, 3, 4]
print('数组a类型:', a.dtype)		# int64b = np.array([1.2, 3.5, 5.1])
print('数组b类型:', b.dtype)     # float64

3.3. zeros()、ones() 、 empty()

函数zeros创建一个全是0的数组,
函数ones创建一个全1的数组,
函数empty创建一个内容随机并且依赖于内存状态的数组。默认创建的数组类型(dtype)都是float64

zero1 = np.zeros((3, 4))    # 3个一维数组, 每个长度为: 4
print('数组zero1: ', zero1)  #  数组zero1: [[0. 0. 0. 0.]# 			   [0. 0. 0. 0.]#             [0. 0. 0. 0.]]ones1 = np.ones((2, 3, 4))  # 2个二维数组, 每个二维数组有3个一维数组, 每个一维数组有4个元素1, 整体放入1个数组中
print('数组one1: ', ones1)    # 数组one1:  [[[1. 1. 1. 1.]#              [1. 1. 1. 1.]#              [1. 1. 1. 1.]]#              [[1. 1. 1. 1.]#               [1. 1. 1. 1.]#               [1. 1. 1. 1.]]]empty1 = np.empty((2, 3))
print('数组empty1: ', empty1)  # 数组empty1:  [[6.23042070e-307 5.11798224e-307 1.37961370e-306]#			      [4.22795269e-307 9.34609790e-307 1.06101441e-312]]print(zero1.dtype, ones1.dtype, empty1.dtype)  # float64  float64  float64

3.4. arange(),类似 python 的 range() ,创建一个一维 ndarray 数组。

代码如下(示例):

np_arange = np.arange(10, 20, 5,dtype=int)   # 起始, 结束, 步长, 类型print("arange创建np_arange:", np_arange)     #  arange创建np_arange: [10 15]
print("arange创建np_arange的元素类型:", np_arange.dtype)  # arange创建np_arange的元素类型: int32
print("arange创建np_arange的类型:", type(np_arange))  # arange创建np_arange的类型: <class 'numpy.ndarray'>

3.5. matrix(),是 ndarray 的子类,只能生成 2 维的矩阵

代码如下(示例):

x1 = np.mat("1 2;3 4")
print(x1)    # [[1 2]#	[3 4]]x2 = np.matrix("1,2;3,4")
print(x2)       # [[1 2]#  [3 4]]x3 = np.matrix([[1, 2, 3, 4], [5, 6, 7, 8]])
print(x3)       # [[1 2 3 4]#  [5 6 7 8]]

3.6. 创建随机数矩阵

代码如下(示例):

import numpy as np# 生成指定维度大小(3行4列)的随机多维浮点型数据(二维), rand固定区间0.0 ~ 1.0
arr = np.random.rand(3, 4)
print(arr)        # [[0.09119117 0.6460204  0.50383065 0.67335935]#  [0.19701768 0.15571364 0.59120424 0.77497329]#  [0.22062685 0.2902945  0.38695936 0.81338176]]print(type(arr))  # <class 'numpy.ndarray'># 生成指定维度大小(3行4列)的随机多维整型数据(二维), randint()可指定区间(-1, 5)
arr = np.random.randint(-1, 5, size=(3, 4))
print(arr)        # [[ 1  3  4  1]#  [ 0 -1  4  0]#  [ 3  4  0  2]]
print(type(arr))  # <class 'numpy.ndarray'>#生成指定维度大小(3行4列)的随机多维浮点型数据(二维), uniform()可以指定区间(-1, 5)产生-1到5之间均匀分布的样本值
arr = np.random.uniform(-1, 5, size=(3, 4))
print(arr)		  # [[ 1.13673297  1.48527364  3.24196413  0.86342194]#  [ 1.49173484  4.82213745  3.62326883 -0.20275583]#  [ 3.6385359  -0.47568918  0.35379637  3.20684058]]
print(type(arr))  # <class 'numpy.ndarray'>

3.7. 等比数列

代码如下(示例):

# np.logspace 等比数列, logspace中,开始点和结束点是10的幂
# 我们让开始点为0,结束点为0,元素个数为10,看看输出结果。a = np.logspace(0,0,10)# 输出结果
print(a)   # [1,1,1,1,1,1,1,1,1,1]# 假如,我们想要改变基数,不让它以10为底数,我们可以改变base参数,将其设置为2a = np.logspace(0,9,10, base=2)# 输出结果
print(a)   # [1.,2.,4.,8.,16.,32.,~~~~~~,512.]

3.8. 等差数列

代码如下(示例):

# np.linspace等差数列
# np.linspace是用于创建一个一维数组,并且是等差数列构成的一维数组,它最常用的有三个参数。
# 第一个例子,用到三个参数,第一个参数表示起始点,第二个参数表示终止点,第三个参数表示数列的个数。
a = np.linspace(1,10,10)
print(a)  # [ 1.  2.  3.  4.  5.  6.  7.  8.  9. 10.]# 可以使用参数endpoiint来决定是否包含终止值,默认值是True
a = np.linspace(1,10,10,endpoint=False)
print(a)  # [1.  1.9 2.8 3.7 4.6 5.5 6.4 7.3 8.2 9.1]

四、Numpy的内置函数

4.1. 基本函数

1、np.ceil(): 向上最接近的整数,参数是 number 或 array
2、np.floor(): 向下最接近的整数,参数是 number 或 array
3、np.rint(): 四舍五入,参数是 number 或 array
4、np.isnan(): 判断元素是否为 NaN(Not a Number),参数是 number 或 array
5、np.multiply(): 元素相乘,参数是 number 或 array
6、np.divide(): 元素相除,参数是 number 或 array
7、np.abs():元素的绝对值,参数是 number 或 array
8、np.where(condition, x, y): 三元运算符,x if condition else y

# 注意: 需要注意multiply/divide 如果是两个ndarray进行运算 shape必须一致
arr = np.random.randn(2, 3)
print(arr)                # [[0.22519249 -0.6241801   0.18576015]#  [1.79683596  0.36047647 -0.56127028]]print(np.ceil(arr))       # [[ 1. -0.  1.]#  [ 2.  1. -0.]]print(np.floor(arr))	  # [[ 0. -1.  0.]#  [ 1.  0. -1.]]print(np.rint(arr))       # [[ 0. -1.  0.]#  [ 2.  0. -1.]]print(np.isnan(arr))      # [[False False False]#  [False False False]]print(np.multiply(arr, arr))   # [[0.05071166 0.38960079 0.03450683]#  [3.22861945 0.12994329 0.31502433]]print(np.divide(arr, arr))     # [[1. 1. 1.]#  [1. 1. 1.]]print(np.where(arr > 0, 1, -1))  # [[ 1 -1  1]#  [ 1  1 -1]]

4.2. 统计函数

1、np.mean(), np.sum():所有元素的平均值,所有元素的和,参数是 number 或 array
2、np.max(), np.min():所有元素的最大值,所有元素的最小值,参数是 number 或 array
3、np.std(), np.var():所有元素的标准差,所有元素的方差,参数是 number 或 array
4、np.argmax(), np.argmin():最大值的下标索引值,最小值的下标索引值,参数是 number 或 array
5、np.cumsum(), np.cumprod():返回一个一维数组,每个元素都是之前所有元素的 累加和 和 累乘积,参数是 number 或 array

 # 多维数组默认统计全部维度,axis参数可以按指定轴心统计,值为0则按列统计,值为1则按行统计。arr = np.arange(12).reshape(3, 4)
print(arr)            # [[ 0  1  2  3]#  [ 4  5  6  7]#  [ 8  9 10 11]]# 返回一个一维数组, 每个元素都是之前所有元素的 累加和
print(np.cumsum(arr))     #  [ 0  1  3  6 10 15 21 28 36 45 55 66]# 所有元素的和
print(np.sum(arr))        # 66# 数组的按列统计和
print(np.sum(arr, axis = 0))   # [12 15 18 21]#数组的按行统计和
print(np.sum(arr, axis = 1))   # [ 6 22 38]

4.3. 比较函数

  • 假如我们想要知道矩阵a和矩阵b中所有对应元素是否相等,我们需要使用all方法
  • 假如我们想要知道矩阵a和矩阵b中对应元素是否有一个相等,我们需要使用any方法

代码如下(示例):

# np.any(): 至少有一个元素满足指定条件,返回True
# np.all(): 所有的元素满足指定条件,返回Truearr = np.random.randn(2, 3)
print(arr)             # [[0.62062377 0.40942285 0.2950361 ]#  [0.21878013 0.92271838 1.67930325]]print(np.any(arr > 0)) # True
print(np.all(arr > 0)) # True

4.4. 去重函数

np.unique():找到唯一值并返回排序结果,类似于Python的set集合

arr = np.array([[1, 2, 1], [2, 3, 4]])print(arr)        # [[1 2 1]#  [2 3 4]]print(np.unique(arr))  # [1 2 3 4]

4.5. 排序函数

代码如下(示例):

arr = np.array([1, 2, 34, 5])
print("原数组arr:", arr)        # 原数组arr: [ 1  2 34  5]# np.sort()函数排序, 返回排序后的副本
sortarr1 = np.sort(arr)
print("numpy.sort()函数排序后的数组:", sortarr1)    # numpy.sort()函数排序后的数组: [ 1  2  5 34]# ndarray直接调用sort, 在原数据上进行修改
arr.sort()
print("数组.sort()方法排序:", arr)       # 数组.sort()方法排序: [ 1  2  5 34]

五、Numpy运算

5.1. 加减、点乘、除法

  • 都是对应元素进行加减乘除,所以要求两个数组的行列都要一样

代码如下(示例):

import numpy as npa = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([[1, 2, 3], [4, 5, 6]])
c = a - b
d = a + b
e = a * b
f = a / b
print("数组a:", a)           # 数组a: [[1 2 3]#         [4 5 6]]print("数组b:", b)			#  数组b: [[1 2 3]#          [4 5 6]]print("数组运算a-b:", c)     #  数组运算a-b: [[0 0 0]#                [0 0 0]]print("数组运算a+b:", d)     #  数组运算a+b: [[ 2  4  6]#               [ 8 10 12]]print("数组运算a*b:", e)	    #  数组运算a*b: [[ 1  4  9]#                [16 25 36]]print(np.multiply(a, b))     # 效果同上  print("数组运算a/b:", f)     # 数组运算a/b: [[1. 1. 1.]#               [1. 1. 1.]]

5.2. 矩阵相乘(外积)

arr_a.dot(arr_b) 前提` arr_a 列数 = arr_b行数

import numpy as npx = np.array([[1, 2, 3], [4, 5, 6]])
y = np.array([[6, 23], [-1, 7], [8, 9]])print(x)            #  [[1 2 3]#    [4 5 6]]print(y)            #  [[ 6 23]#   [-1  7]#   [ 8  9]]# 就是拿 x的行乘以y 的列 乘积相加  1*6 + 2*(-1) + 3*8 = 28
#                               1*23 + 2*7 + 3*9 = 64
#                               4*6 + 5*(-1) + 6*8 = 67
#                               4*23 + 5*7 + 6*9 = 181print(x.dot(y))     # [[ 28  64]#  [ 67 181]]print(np.dot(x, y))  # [[ 28  64]#  [ 67 181]]

总结

  • 以上就是numpy中的属性跟函数。

相关文章:

一、Numpy入门

Numpy入门 前言一、numpy简介二、Numpy的ndarray属性2.1. 直接用 .属性的方法实现2.2. 直接函数的方法实现 三、Numpy的ndarray的创建3.1. ndarray介绍3.2. 数组形式3.3. zeros()、ones() 、 empty()3.4. arange()&#xff0c;类似 python 的 range() &#xff0c;创建一个一维…...

自动化测试框架设计核心理念——关键字驱动

很多人在接触自动化测试时&#xff0c;都会听到关键字驱动这样的一个概念&#xff0c;但是在研究时却有些不太清楚这种驱动模式的设计及实现到底该如何着手去做。 关键字驱动&#xff0c;作为一种自动化测试框架的设计形式&#xff0c;在很早的时候就已经有提及过了。它的基本…...

GO GIN SSE DEMO

文章目录 接口描述&#xff1a;1.1 /events/time - 时间流1.2 /events/numbers - 数字流 2. 用户管理接口2.1 /user/:id - 获取用户信息2.2 /user - 创建用户 项目结构1. main.go2. 创建 handlers/event_time.go3. 创建 handlers/event_number.go4. handlers/user.go5. 运行服务…...

GEE教程:1950-2023年ECMWF数据中积雪的长时序统计分析

目录 简介 数据 函数 millis() Arguments: Returns: Long 代码 结果 简介 1950-2023年ECMWF数据中积雪的长时序统计分析 数据 ECMWF/ERA5_LAND/DAILY_AGGR是由欧洲中期天气预报中心(ECMWF)提供的数据集。它是一个格网数据集,包含从ERA5-Land再分析数据集中得出的…...

【React Native】路由和导航

RN 中的路由是通过 React Navigation 组件来完成的 Stack 路由导航RN 中默认没有类似浏览器的 history 对象在 RN 中路由跳转之前&#xff0c;需要先将路由声明在 Stack 中<Stack.Navigator initialRouteNameDetails> <Stack.Screen nameDetails /> </Stack.N…...

Linux环境基础开发工具---vim

1.快速的介绍一下vim vim是一款多模式的编辑器&#xff0c;里面有很多子命令&#xff0c;来实现代码编写操作。 2.vim的模式 vim一共有三种模式&#xff1a;底行模式&#xff0c;命令模式&#xff0c;插入模式。 2.1vim模式之间的切换 2.2 谈论常见的模式---命令模式&#xf…...

python AssertionError: Torch not compiled with CUDA enabled

查看&#xff1a;torch import torch# 输出带CPU&#xff0c;表示torch是CPU版本的 print(ftorch的版本是&#xff1a;{torch.__version__}) # print(ftorch是否能使用cuda&#xff1a;{torch.cuda.is_available()}) 修改一下代码&#xff0c;将cuda改成cpu 最后运行正常&…...

Pandas的入门操作-Series对象

Pandas的数据结构 Series对象 class pandas.Series(dataNone, indexNone) data参数 含义&#xff1a;data是Series构造函数中最主要的参数&#xff0c;它用来指定要存储在Series中的数据。 数据类型&#xff1a;data可以是多种数据类型&#xff0c;例如&#xff1a; Python 列…...

自然语言处理系列六十八》搜索引擎项目实战》搜索引擎系统架构设计

注&#xff1a;此文章内容均节选自充电了么创始人&#xff0c;CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》&#xff08;人工智能科学与技术丛书&#xff09;【陈敬雷编著】【清华大学出版社】 文章目录 自然语言处理系列六十八搜索引擎项目实战》搜索引擎系统架构设计…...

H5依赖安装

依赖安装 git和sourceTree编辑器使用vscode下载nvm 和nodejs git和sourceTree 使用 ssh-keygen -t rsa 进行密钥获取 git下载地址&#xff1a;https://git-scm.com/ sourceTree下载地址&#xff1a;https://www.sourcetreeapp.com/ 编辑器使用vscode 最新版网址&#xff1a;…...

MatchRFG:引领MemeCoin潮流,探索无限增长潜力

Meme币无疑是本轮牛市最热闹的赛道&#xff0c;而围绕Meme币的讨论话题基本都集中在价格炒作上。似乎人们习惯性地认为&#xff0c;Meme币的创造和成长往往与真正的价值无关。热炒过后&#xff0c;价格能否通过共识转化为价值&#xff0c;也正是许多Meme币在热潮冷却后的主要成…...

2024/9/18 模型的存储与读取

一、模型的存储与读取 主要涉及到torch.save和torch.load函数 新建两个python文件&#xff1a; 1.在model_save文件中保存模型(方式一)和模型参数(方式二) 2.在model_load文件中读取模型(方式一)和模型参数并装载模型(方式二)...

在 fnOS上安装 KVM 虚拟化,并使用 Cockpit 网页管理虚拟机

在fnOS系统上安装 KVM 虚拟化&#xff0c;并使用 Cockpit 进行网页管理&#xff0c;可以按照以下步骤进行&#xff1a; 1. 安装 KVM虚拟化组件 首先&#xff0c;更新软件列表和系统包&#xff1a; sudo apt update && sudo apt upgrade -y 安装 KVM 及相关工具软件&…...

VUE实现刻度尺进度条

一、如下图所示效果&#xff1a; 运行后入下图所示效果&#xff1a; 实现原理是用div画图并动态改变进度&#xff0c; 二、div源码 <div style"width: 100%;"><div class"sdg_title" style"height: 35px;"><!--对话组[{{ dialo…...

ZYNQ FPGA自学笔记~点亮LED

一 ZYNQ FPGA简介 ZYNQ FPGA主要特点是包含了完整的ARM处理系统&#xff0c;内部包含了内存控制器和大量的外设&#xff0c;且可独立于可编程逻辑单元&#xff0c;下图中的ARM内核为 ARM Cortex™-A9&#xff0c;ZYNQ FPGA包含两大功能块&#xff0c;处理系统Processing System…...

攻击者如何在日常网络资源中隐藏恶意软件

近二十年来&#xff0c;安全 Web 网关 (SWG) 一直在监控网络流量&#xff0c;以检测恶意软件、阻止恶意网站并保护企业免受基于 Web 的威胁。 然而&#xff0c;攻击者已经找到了许多绕过这些防御措施的方法&#xff0c;SquareX的安全研究人员对此进行了记录。 最危险的策略之…...

《深度学习》深度学习 框架、流程解析、动态展示及推导

目录 一、深度学习 1、什么是深度学习 2、特点 3、神经网络构造 1&#xff09;单层神经元 • 推导 • 示例 2&#xff09;多层神经网络 3&#xff09;小结 4、感知器 神经网络的本质 5、多层感知器 6、动态图像示例 1&#xff09;一个神经元 相当于下列状态&…...

“中秋快乐”文字横幅的MATLAB代码生成

中秋快乐呀朋友们&#xff01;&#xff01;&#xff01; 给大家带来一个好玩的代码&#xff0c;能够生成“中秋快乐”的横幅文字&#xff0c;比较简单&#xff0c;当然你也可以根据自己的需求去更改文字和背景&#xff0c;废话不多说&#xff0c;直接展示。 文字会一直闪烁&…...

【Node.js】RabbitMQ 延时消息

概述 在 RabbitMQ 中实现延迟消息通常需要借助插件&#xff08;如 RabbitMQ 延迟队列插件&#xff09;&#xff0c;因为 RabbitMQ 本身不原生支持延迟消息。 延迟消息的一个典型场景是&#xff0c;当消息发布到队列后&#xff0c;等待一段时间再由消费者消费。这可以通过配置…...

前后端分离Vue美容店会员信息管理系统o7grs

目录 技术栈介绍具体实现截图系统设计研究方法&#xff1a;设计步骤设计流程核心代码部分展示研究方法详细视频演示试验方案论文大纲源码获取 技术栈介绍 本课题的研究方法和研究步骤基本合理&#xff0c;难度适中&#xff0c;本选题是学生所学专业知识的延续&#xff0c;符合…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

【Linux】Linux安装并配置RabbitMQ

目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的&#xff0c;需要先安…...