【Python】Python给工作减负-读Excel文件生成xml文件

2023-12-02 11:44

本文主要是介绍【Python】Python给工作减负-读Excel文件生成xml文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

​前言

正文

1.Python基础学习

2.Python读取Excel表格

2.1安装xlrd模块

2.2使用介绍

2.2.1常用单元格中的数据类型

2.2.2 导入模块

2.2.3打开Excel文件读取数据

2.2.4常用函数

2.2.5代码测试

2.2.6 Python操作Excel官方网址

3.Python创建xml文件

3.1 xml语法学习

3.2创建xml文件

3.3 代码测试

4.解决问题

5.总结


​前言

ECU诊断工作,需要实现的DTC(Diagnostic trouble code)接近500个,每个DTC的配置项基本类似。也就是说需要在ISOLAR工具上重复手动配置500个DTC。ISOLAR工具还非常的卡。

分析整个操作过程为:Excel表格读取一个DTC码-->ISOLAR工具中手动配置一个DTC-->重复500次 --> 最后生成配置文件Dem_Config.axml.

Axml文件中每一项DTC的配置内容如下,基本就是修改DTC码。

基于以上重复且有规律的工作需求,考虑使用Python脚本搞定。

正文

1.Python基础学习

推荐菜鸟教程:https://www.runoob.com/python3/python3-install.html

整个学习过程推荐两到3天完成。

2.Python读取Excel表格

python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。这里只用到xlrd模块。

2.1安装xlrd模块

命令行:pip install xlrd

2.2使用介绍

2.2.1常用单元格中的数据类型

0: empty, 

1: string(text), 

2:number, 3:date, 

4: boolean, 

5: error, 

b: blank(空白)

2.2.2 导入模块

Import xlrd

2.2.3打开Excel文件读取数据

Data = xlrd.open_workbook(r’filename’)

2.2.4常用函数

Excel当中最重要的就是对book(工作簿)和sheet(工作表)的操作

1)获取book中一个工作表

table = data.sheets()[0]     #通过索引顺序获取
table = data.sheet_by_index(sheet_indx))   #通过索引顺序获取
table = data.sheet_by_name(sheet_name)  #通过名称获取

以上三个函数都会返回一个xlrd.sheet.Sheet()对象

names = data.sheet_names() #返回book中所有工作表的名字
data.sheet_loaded(sheet_name or indx) # 检查某个sheet是否导入完毕

2)行的操作

nrows = table.nrows #获取该sheet中的有效行数
table.row(rowx) #返回由该行中所有的单元格对象组成的列表
table.row_slice(rowx) #返回由该列中所有的单元格对象组成的列表
table.row_types(rowx, start_colx=0, end_colx=None) #返回由该行中所有单元格的数据类型组成的列表
table.row_values(rowx, start_colx=0, end_colx=None) #返回由该行中所有单元格的数据组成的列表
table.row_len(rowx) #返回该列的有效单元格长度

3)列的操作

ncols = table.ncols #获取列表的有效列数
table.col(colx, start_rowx=0, end_rowx=None) #返回由该列中所有的单元格对象组成的列表
table.col_slice(colx, start_rowx=0, end_rowx=None) #返回由该列中所有的单元格对象组成的列表
table.col_types(colx, start_rowx=0, end_rowx=None) #返回由该列中所有单元格的数据类型组成的列表
table.col_values(colx, start_rowx=0, end_rowx=None) #返回由该列中所有单元格的数据组成的列表
 

4)单元格的操作

table.cell(rowx,colx) #返回单元格对象
table.cell_type(rowx,colx) #返回单元格中的数据类型
table.cell_value(rowx,colx) #返回单元格中的数据

2.2.5代码测试

测试Excel表格

测试代码:

#!/usr/bin/env python
import xlrd
​
data = xlrd.open_workbook(r'.\book.xlsx')
​
def xlrd_read():table = data.sheets()[0]     #通过索引顺序获取第一个sheet1
#行操作print("There are %s rows in sheet1" %(table.nrows))      #获取该sheet中的有效行数print("Return type of table.row(): ", type(table.row(0)))   #返回由该行中所有的单元格对象组成的列表print("Items of row 1 on shee1: ", table.row(1))     #第2行列表元素print("Items of row 2 on sheet1: ", table.row_slice(2))     #返回由该行中所有的单元格对象组成的列表print(table.row_types(1, start_colx=0, end_colx=None))  #返回由该行中所有单元格的数据类型组成的列表print(table.row_values(1, start_colx=0, end_colx=None))  #返回由该行中所有单元格的数据组成的列表print("Length of row 2: ", table.row_len(1))  #返回该行的有效单元格长度#列操作print("There are %s columns in sheet1" %(table.ncols)) #获取列表的有效列数print(table.col(0, start_rowx=0, end_rowx=None))    #返回由该列中所有的单元格对象组成的列表print(table.col_slice(0, start_rowx=0, end_rowx=None))  # 返回由该列中所有的单元格对象组成的列表print(table.col_types(0, start_rowx=0, end_rowx=None))  # 返回由该列中所有单元格的数据类型组成的列表print(table.col_values(0, start_rowx=0, end_rowx=None))  # 返回由该列中所有单元格的数据组成的列表#单元格操作print(table.cell(1, 1))  # 返回单元格对象print(table.cell_type(1, 1))  # 返回单元格中的数据类型print(table.cell_value(1, 1))  # 返回单元格中的数据
def main():xlrd_read()
if __name__ == '__main__':main()
 

测试结果

2.2.6 Python操作Excel官方网址

http://www.python-excel.org/

3.Python创建xml文件

3.1 xml语法学习

https://www.runoob.com/xml/xml-tutorial.html

3.2创建xml文件

ElementTree是python的XML处理模块,它提供了一个轻量级的对象模型。它在Python2.5以后成为Python标准库的一部分,但是Python2.4之前需要单独安装。在使用ElementTree模块时,需要import xml.etree.ElementTree的操作。

ElementTree表示整个XML节点树,而Element表示节点数中的一个单独的节点。

构建XML文件

ElementTree(tag),其中tag表示根节点,初始化一个ElementTree对象。

Element(tag, attrib={}, **extra)函数用来构造XML的一个根节点,其中tag表示根节点的名称,attrib是一个可选项,表示节点的属性。

SubElement(parent, tag, attrib={}, **extra)用来构造一个已经存在的节点的子节点。

Element.text和SubElement.text表示element对象的额外的内容属性,Element.tag和Element.attrib分别表示element对象的标签和属性。

ElementTree.write(file, encoding='us-ascii', xml_declaration=None, default_namespace=None, method='xml'),函数新建一个XML文件,并且将节点数数据写入XML文件中。

3.3 代码测试

import xml.etree.ElementTree as ET
​
def buildNewsXmlFile():# 设置一个新节点,并设置其标签为rootroot = ET.Element("root")# 在root下新建两个子节点,设置其名称分别为sina和chinabytesina = ET.SubElement(root, "sina")chinabyte = ET.SubElement(root, "chinabyte")# 在sina下新建两个子节点,设置其节点名称分别为number和firstsina_number = ET.SubElement(sina, "number")sina_number.text = "1"sina_first = ET.SubElement(sina, "first")sina_first.text = "http://roll.tech.sina.com.cn/internet_all/index_1.shtml"# 在chinabyte下新建两个子节点,设置其节点名称为number和firstchinabyte_number = ET.SubElement(chinabyte, "number")chinabyte_number.text = "1"chinabyte_first = ET.SubElement(chinabyte, "first")chinabyte_first.text = "http://www.chinabyte.com/more/124566.shtml"# 将节点数信息保存在ElementTree中,并且保存为XML格式文件RawText = ET.tostring(root)dom = minidom.parseString(RawText)f = open(r'.\Test_4.axml', 'w', encoding='utf-8')dom.writexml(f, indent='\t', newl='\n', addindent='\t', encoding='utf-8')f.close()def main():# xml_read()# xml_write()#xml_create()buildNewsXmlFile()if __name__ == '__main__':main()

4.解决问题

读取Excel表格提取需要的数据 --> 缓存数据 --> 遍历没有给数据生成xml文件 --> 合并到配置文件当值 --> 完成所有配置

#!/usr/bin/env python
import xlrd
import xml.etree.ElementTree as ET
​
from xml.dom import minidom
​
ExcelPath = r'.\FileName.xlsx'
First_Dtc_RowNum = 25
Last_Dtc_RowNum = 456
DtcCodeHexStr = []
DtcCodeDemStr = []
​
def OpenExcel():global DtcCodeHexStrglobal DtcCodeDemStrdata = xlrd.open_workbook(ExcelPath)table = data.sheet_by_name('DTC')DtcCodeHexStr = table.col_values(2, start_rowx=First_Dtc_RowNum, end_rowx=Last_Dtc_RowNum)for HexStr in DtcCodeHexStr:int_10 = int(str(HexStr), 16)int_10_str = str(int_10)DtcCodeDemStr.append(int_10_str)print("Type of DtcCodeHexStr = ",type(DtcCodeHexStr))print("DtcCodeHexStr = ",DtcCodeHexStr)print("Type of DtcCodeDemStr = ", type(DtcCodeDemStr))print("DtcCodeDemStr = ", DtcCodeDemStr)
​
def CreatDemDtcXml():global First_Dtc_RowNumglobal Last_Dtc_RowNumglobal DtcCodeHexStrglobal DtcCodeDemStrCONTAINERS = ET.Element("CONTAINERS")for i in range(Last_Dtc_RowNum - First_Dtc_RowNum):EcuContainrValue = ET.SubElement(CONTAINERS, "ECUC-CONTAINER-VALUE")ET.SubElement(EcuContainrValue, "SHORT-NAME").text = "DemDTC_" + DtcCodeHexStr[i]ET.SubElement(EcuContainrValue, "DEFINITION-REF", {"DEST": "ECUC-PARAM-CONF-CONTAINER-DEF"}).text = "/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemDTC"ParameterValues =  ET.SubElement(EcuContainrValue, "PARAMETER-VALUES")EcucTextualParamValue = ET.SubElement(ParameterValues, "ECUC-TEXTUAL-PARAM-VALUE")ET.SubElement(EcucTextualParamValue, "DEFINITION-REF",{"DEST":"ECUC-ENUMERATION-PARAM-DEF"}).text = "/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemDTC/DemDTCSeverity"ET.SubElement(EcucTextualParamValue, "VALUE").text = "DEM_SEVERITY_NO_SEVERITY"EcuNumerivalParamValue = ET.SubElement(ParameterValues, "ECUC-NUMERICAL-PARAM-VALUE")ET.SubElement(EcuNumerivalParamValue, "DEFINITION-REF", {"DEST":"ECUC-INTEGER-PARAM-DEF"}).text = "/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemDTC/DemDtcValue"ET.SubElement(EcuNumerivalParamValue, "VALUE").text = DtcCodeDemStr[i]ReferenceValues = ET.SubElement(EcuContainrValue, "REFERENCE-VALUES")EcucReferenceValue = ET.SubElement(ReferenceValues, "ECUC-REFERENCE-VALUE")ET.SubElement(EcucReferenceValue, "DEFINITION-REF",{"DEST":"ECUC-REFERENCE-DEF"}).text = "/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemDTC/DemDTCAttributesRef"ET.SubElement(EcucReferenceValue, "VALUE-REF",{"DEST":"ECUC-CONTAINER-VALUE"}).text = "/ETAS_Project/EcucModuleConfigurationValuess/Dem/DemConfigSet_0/DemDTCAttributes"RawText = ET.tostring(CONTAINERS)dom = minidom.parseString(RawText)f = open(r'.\DemDtc.axml', 'w', encoding='utf-8')dom.writexml(f, indent='\t', newl='\n', addindent='\t', encoding='utf-8')f.close()def CreatDemEventParameterXml():global First_Dtc_RowNumglobal Last_Dtc_RowNumglobal DtcCodeHexStrglobal DtcCodeDemStrCONTAINERS = ET.Element("CONTAINERS")for i in range(Last_Dtc_RowNum - First_Dtc_RowNum):EcuContainrValue = ET.SubElement(CONTAINERS, "ECUC-CONTAINER-VALUE")ET.SubElement(EcuContainrValue, "SHORT-NAME").text = "DemEventParameter_" + DtcCodeHexStr[i]ET.SubElement(EcuContainrValue,"DEFINITION-REF").text = "/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter"ParameterValues = ET.SubElement(EcuContainrValue, "PARAMETER-VALUES")EcucNumericalParamValue_0 = ET.SubElement(ParameterValues, "ECUC-NUMERICAL-PARAM-VALUE")ET.SubElement(EcucNumericalParamValue_0, "DEFINITION-REF", {"DEST": "ECUC-INTEGER-PARAM-DEF"}).text = "/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter/DemEventFailureCycleCounterThreshold"ET.SubElement(EcucNumericalParamValue_0, "VALUE").text = "1"EcucTextualParamValue_0 = ET.SubElement(ParameterValues, "ECUC-TEXTUAL-PARAM-VALUE")ET.SubElement(EcucTextualParamValue_0, "DEFINITION-REF", {"DEST": "ECUC-ENUMERATION-PARAM-DEF"}).text = "/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter/DemReportBehavior"ET.SubElement(EcucTextualParamValue_0, "VALUE").text = "REPORT_BEFORE_INIT"EcucNumericalParamValue_1 = ET.SubElement(ParameterValues, "ECUC-NUMERICAL-PARAM-VALUE")ET.SubElement(EcucNumericalParamValue_1, "DEFINITION-REF", {"DEST": "ECUC-BOOLEAN-PARAM-DEF"}).text = "/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter/DemEventAvailable"ET.SubElement(EcucNumericalParamValue_1, "VALUE").text = "true"EcucTextualParamValue_1 = ET.SubElement(ParameterValues, "ECUC-TEXTUAL-PARAM-VALUE")ET.SubElement(EcucTextualParamValue_1, "DEFINITION-REF", {"DEST": "ECUC-ENUMERATION-PARAM-DEF"}).text = "/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter/DemEventKind"ET.SubElement(EcucTextualParamValue_1, "VALUE").text = "DEM_EVENT_KIND_BSW"EcucNumericalParamValue_2 = ET.SubElement(ParameterValues, "ECUC-NUMERICAL-PARAM-VALUE")ET.SubElement(EcucNumericalParamValue_2, "DEFINITION-REF", {"DEST": "ECUC-BOOLEAN-PARAM-DEF"}).text = "/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter/DemFFPrestorageSupported"ET.SubElement(EcucNumericalParamValue_2, "VALUE").text = "false"ReferenceValues = ET.SubElement(EcuContainrValue, "REFERENCE-VALUES")EcucReferenceValue_0 = ET.SubElement(ReferenceValues, "ECUC-REFERENCE-VALUE")ET.SubElement(EcucReferenceValue_0, "DEFINITION-REF", {"DEST": "ECUC-REFERENCE-DEF"}).text = "/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter/DemDTCRef"ET.SubElement(EcucReferenceValue_0, "VALUE-REF", {"DEST": "ECUC-CONTAINER-VALUE"}).text = "/ETAS_Project/EcucModuleConfigurationValuess/Dem/DemConfigSet_0/DemDTC_" + DtcCodeHexStr[i]EcucReferenceValue_1 = ET.SubElement(ReferenceValues, "ECUC-REFERENCE-VALUE")ET.SubElement(EcucReferenceValue_1, "DEFINITION-REF", {"DEST": "ECUC-REFERENCE-DEF"}).text = "/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter/DemOperationCycleRef"ET.SubElement(EcucReferenceValue_1, "VALUE-REF", {"DEST": "ECUC-CONTAINER-VALUE"}).text = "/ETAS_Project/EcucModuleConfigurationValuess/Dem/DemGeneral/DemOperationCycle_Other"SubContainers = ET.SubElement(EcuContainrValue, "SUB-CONTAINERS")EcucContainerValu_0 = ET.SubElement(SubContainers, "ECUC-CONTAINER-VALUE")ET.SubElement(EcucContainerValu_0, "SHORT-NAME").text = "DemRbEventClass_0"ET.SubElement(EcucContainerValu_0, "DEFINITION-REF", {"DEST": "ECUC-PARAM-CONF-CONTAINER-DEF"}).text = "/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter/DemRbEventClass"ParameterValues_0 = ET.SubElement(EcucContainerValu_0, "PARAMETER-VALUES")EcucNumericalParamValue_3 = ET.SubElement(ParameterValues_0, "ECUC-NUMERICAL-PARAM-VALUE")ET.SubElement(EcucNumericalParamValue_3, "DEFINITION-REF", {"DEST": "ECUC-INTEGER-PARAM-DEF"}).text = "/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter/DemRbEventClass/DemRbEventBufferTime"ET.SubElement(EcucNumericalParamValue_3, "VALUE").text = "0"EcucNumericalParamValue_4 = ET.SubElement(ParameterValues_0, "ECUC-NUMERICAL-PARAM-VALUE")ET.SubElement(EcucNumericalParamValue_4, "DEFINITION-REF", {"DEST": "ECUC-BOOLEAN-PARAM-DEF"}).text = "/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter/DemRbEventClass/DemRbEventRecoverableInSameOperationCycle"ET.SubElement(EcucNumericalParamValue_4, "VALUE").text = "1"EcucNumericalParamValue_5 = ET.SubElement(ParameterValues_0, "ECUC-NUMERICAL-PARAM-VALUE")ET.SubElement(EcucNumericalParamValue_5, "DEFINITION-REF", {"DEST": "ECUC-BOOLEAN-PARAM-DEF"}).text = "/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter/DemRbEventClass/DemRbEventStatusBitStorageTestFailed"ET.SubElement(EcucNumericalParamValue_5, "VALUE").text = "0"EcucContainerValu_1 = ET.SubElement(SubContainers, "ECUC-CONTAINER-VALUE")ET.SubElement(EcucContainerValu_1, "SHORT-NAME").text = "DemDebounceAlgorithmClass"ET.SubElement(EcucContainerValu_1, "DEFINITION-REF", {"DEST": "ECUC-CHOICE-CONTAINER-DEF"}).text = "/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter/DemDebounceAlgorithmClass"SubContainers_1 = ET.SubElement(EcucContainerValu_1, "SUB-CONTAINERS")EcucContainerValu_2 = ET.SubElement(SubContainers_1, "ECUC-CONTAINER-VALUE")ET.SubElement(EcucContainerValu_2, "SHORT-NAME").text = "DemDebounceCounterBased"ET.SubElement(EcucContainerValu_2, "DEFINITION-REF", {"DEST": "ECUC-PARAM-CONF-CONTAINER-DEF"}).text = "/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter/DemDebounceAlgorithmClass/DemDebounceCounterBased"ReferenceValues_0 = ET.SubElement(EcucContainerValu_2, "REFERENCE-VALUES")EcucReferenceValue_2 = ET.SubElement(ReferenceValues_0, "ECUC-REFERENCE-VALUE")ET.SubElement(EcucReferenceValue_2, "DEFINITION-REF", {"DEST": "ECUC-REFERENCE-DEF"}).text = "/AUTOSAR_Dem/EcucModuleDefs/Dem/DemConfigSet/DemEventParameter/DemDebounceAlgorithmClass/DemDebounceCounterBased/DemDebounceCounterBasedClassRef"ET.SubElement(EcucReferenceValue_2, "VALUE-REF", {"DEST": "ECUC-CONTAINER-VALUE"}).text = "/ETAS_Project/EcucModuleConfigurationValuess/Dem/DemConfigSet_0/DemDebCntClass_U127_D127"RawText = ET.tostring(CONTAINERS)dom = minidom.parseString(RawText)f = open(r'.\DemEventParameter.axml', 'w', encoding='utf-8')dom.writexml(f, indent='\t', newl='\n', addindent='\t', encoding='utf-8')f.close()
​
def main():OpenExcel()CreatDemDtcXml()CreatDemEventParameterXml()
​
if __name__ == '__main__':main()

5.总结

每个人在处理Excel数据的时候,如果发现是重复且有规律的工作,都可以考虑使用Python来提高效率。当然,Python的功能还有很多很多,把基本知识学好,后面遇到什么就学什么,有目的的去学要快很多。

这篇关于【Python】Python给工作减负-读Excel文件生成xml文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/445224

相关文章

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

poj 1287 Networking(prim or kruscal最小生成树)

题意给你点与点间距离,求最小生成树。 注意点是,两点之间可能有不同的路,输入的时候选择最小的,和之前有道最短路WA的题目类似。 prim代码: #include<stdio.h>const int MaxN = 51;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int P;int prim(){bool vis[MaxN];

poj 2349 Arctic Network uva 10369(prim or kruscal最小生成树)

题目很麻烦,因为不熟悉最小生成树的算法调试了好久。 感觉网上的题目解释都没说得很清楚,不适合新手。自己写一个。 题意:给你点的坐标,然后两点间可以有两种方式来通信:第一种是卫星通信,第二种是无线电通信。 卫星通信:任何两个有卫星频道的点间都可以直接建立连接,与点间的距离无关; 无线电通信:两个点之间的距离不能超过D,无线电收发器的功率越大,D越大,越昂贵。 计算无线电收发器D

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

hdu 1102 uva 10397(最小生成树prim)

hdu 1102: 题意: 给一个邻接矩阵,给一些村庄间已经修的路,问最小生成树。 解析: 把已经修的路的权值改为0,套个prim()。 注意prim 最外层循坏为n-1。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstri

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言