简介面向 ArcGIS 初学者的 Python 脚本入门文档旨在帮助零基础 GIS 使用者掌握 Python 语法并学会连接 arcpy 地理处理解决无法用脚本自动化重复性空间分析任务的问题。内容先从数学运算符、字符串操作、模块导入、def 函数、if/while/for 流程控制与输入输出等语言基础讲起再过渡到 Geoprocessor 对象创建、地理处理帮助查询、工具箱与别名调用、ModelBuilder 中嵌入脚本以及 PythonWin 断点调试并延伸到用 Describe 与 Exists 读取数据信息、循环判断和地图代数应用。压缩包内只有 1 个 docx 文档约 490KB篇幅紧凑、目录层级完整适合作为随查随用的入门手册。目前已有 1494 人学习读者可借此建立从语法到工具调用的完整认知掌握参数列表组织、工具别名简写与调试排错思路为后续空间建模和批量数据处理打下基础。1. 一个文件夹几百份数据要裁剪为什么老手都劝你学 ArcGIS 里的 Python 脚本拿到这份材料的人十个里有八个第一反应一样ArcGIS 不是点鼠标就能出图吗为什么要学 Python 脚本我第一次听到也犯怵以为那是有编程底子的人才碰的东西。换个生活里的说法就清楚了你手里一百份数据要按同一个边界裁剪点鼠标点一百遍中间错一遍还得从头重来而在 ArcGIS 里写 Python 脚本就是把这同样的一百遍写成一份清单交给软件让它自己一轮一轮跑完你去泡杯茶。这份材料正是照这个目标编的从 Python 最基础的运算符一路讲到能自己做出一个小脚本工具。它适合每天在软件里重复点同样几个按钮、想把这些时间省下来的人。2. 先补六个够用的 Python 底子语法不用学全够跑脚本就行很多人卡在“要不要先把 Python 学完再回来”。真不用。地理处理脚本里九成以上的代码干的就五件事算个数、拼个路径、判断一下、循环一遍、把参数接进来。这五件事对应下来就是数学运算符、字符串、模块、函数、流程控制、输入输出这六个点。材料把它们放在同一章是有道理的——这六个点凑齐你就能看懂后面任何一个脚本在干嘛。提示材料里的写法是 Python 2 风格print后面直接跟内容因为 ArcGIS Desktop 自带的就是这个版本。如果你用的是 Python 3 环境print后面加一对括号就行其他逻辑一模一样。2.1 数学运算符和字符串脚本先学会算数和拼路径数学运算符就那几个 - * / ** %。这里真正要记的不是符号而是结果是什么类型因为地理处理脚本里到处是坐标、面积、距离整型和浮点型混起来结果会悄悄差一截。# 整型和浮点型混着算的时候结果跟着浮点型走 print 5 / 2 # 两个都是整型除完还是整型得 2不是 2.5 print 5.0 / 2 # 有一个是浮点型结果就是浮点型得 2.5 print 2 ** 3 # 幂运算2 的 3 次方得 8 print 270 % 360 # 取模270 除以 360 的余数还是 270 print 90 % 360 # 方位角加 180 再取模是转方向的常用写法杀头一行是最容易翻车的地方5 / 2在 Python 2 里得 2不是 2.5。凡是算面积、算距离、算坐标的地方随手写成5.0 / 2这种带小数点的形式能省掉很多莫名其妙的“结果差了一点点”。字符串这块脚本里用得最多的不是拼接而是从一条完整路径里把文件名字抠出来。所以要熟悉下标、切片和split。p d:/work/lu.shp print p[0] # d下标从 0 开始 print p[-1] # p倒数第一个 print p[2:4] # wo从下标 2 取到下标 4 之前不包括 4 print p.find(.) # 10点号第一次出现的位置 print p.split(/) # [d:, work, lu.shp]按斜杠切成一个列表 print p.replace(.shp, .lyr) # 把后缀换掉切片那条规则要背下来含头不含尾。p[2:4]拿到的是第 2、3 两个字符第 4 个不算。split那条更重要它把一条路径变成了一个列表之后你可以用plist[-1]直接拿到文件名用plist[0]拿到盘符这是批量处理文件的基本功。提示Windows 路径里的反斜杠是新手第一个大坑。d:\work\soil.shp里的\w和\s会被当成转义字符输出就乱了。要么把路径写成d:/work/soil.shp正斜杠要么在前面加个r写成rd:\work\soil.shp反斜杠就老老实实是反斜杠本身。2.2 模块和 def把常用动作打包成一句就能用的东西模块可以理解成一个工具箱import就是把这个箱子搬进来。搬进来之后里面的东西要用“箱子名.东西名”的方式取比如math.pi、math.log10(100)。地理处理脚本开头那一排import就是在搬箱子。import math print math.pi # 3.14159265359π 是常量不用加括号 print math.log10(100) # 2.0以 10 为底的对数 print math.hypot(3, 4) # 5.0已知两条直角边求斜边 print math.sin(math.pi / 4) # 三角函数用的是弧度不是角度math.hypot(3, 4)这个函数值得单独记一下算两点之间的直线距离比手写math.sqrt(x*x y*y)短也不容易写错。三角函数那条也是坑math.sin(45)算出来的不是 45 度的正弦得先把角度乘上math.pi / 180转成弧度。def是自己造一个工具放进工具箱。它和模块的区别是模块是别人造好的def是你造的。造一次后面随便用。import math # 角度转弧度以后不用每次都写 math.pi / 180 def radians(angdeg): return angdeg * math.pi / 180 # 弧度转角度方向和上面反过来 def degrees(angrad): return angrad * 180 / math.pi print math.sin(radians(45)) # 0.7071... print degrees(math.acos(0.5)) # 60.0三个细节def那一行末尾有冒号函数体必须缩进return决定这个函数吐出什么。参数angdeg是调用的时候才传进来的你在函数里写的是它的“占位名”叫什么不影响调用。这类小函数写一次后面几十个脚本都能复制过去用。2.3 if / while / for让脚本自己判断、自己重复这三个是脚本真正“活”起来的地方。先看一段有真实背景的判断代码算正午太阳高度角和方位角超过 90 度要做一个折算。lat 30 # 研究区纬度南半球写负数 decl 20 # 太阳赤纬夏至前后大冬至前后小 sunangle 90 - lat decl azimuth 180 if sunangle 90: # 冒号结尾下一行开始缩进 sunangle 180 - sunangle azimuth 0 # 方位角翻到另一边 print sunangle, azimuthif的关键是冒号加缩进这两件事同时出现。新手最常见的错是只写了冒号没缩进或者缩进用了空格和 Tab 混着来软件直接报错。另外比较符号要记牢、、、、等于两个等号、不等于。写成if x 5是赋值不是判断会直接报错。for在 GIS 里出现频率最高因为它就是“把文件夹里每一个文件都处理一遍”。下面这段是后面所有批处理脚本的骨架。import os ws c:/prog/hmbarea ilist os.listdir(ws) # 把工作目录里所有文件名读成一个列表 fcs [] # 先准备一个空列表用来装筛出来的文件 for i in ilist: if i.endswith(.shp): # 只要 .shp 结尾的 fcs.append(i) # 装进列表 for fc in fcs: print fc # 逐个输出实际脚本里这里换成处理动作os.listdir只是把名字读出来不管类型所以第二段循环必须靠endswith筛一遍。这个“先读全量、再筛一遍、再逐个处理”的三段式你后面写任何批量脚本都是这个结构。while用得少一些逻辑是“条件还成立就一直转”。x 1 while x 10: print x x x 1 # 这一行千万别漏漏了就是死循环只能强退while唯一要警惕的就是忘记在循环体里改变量。条件一直是真脚本就永远停不下来界面上看起来像卡死。2.4 简单输入输出让脚本接住你递过去的参数前面几段代码的纬度、赤纬都是写死在脚本里的。写死能跑但每换一个研究区就得改一次代码很别扭。让脚本从外面接收参数才能真正反复用。import sys lat float(sys.argv[1]) # 第 1 个参数转成浮点型 decl float(sys.argv[2]) # 第 2 个参数转成浮点型 sunangle 90 - lat decl azimuth 180 if sunangle 90: sunangle 180 - sunangle azimuth 0 print 正午太阳角 str(sunangle) # 数字和文字拼接必须先转成字符串 print 方位角 str(azimuth)sys.argv是一个列表[0]是脚本自己的名字真正的参数从[1]开始往后排。运行的时候在参数框里填40 23.44脚本里就依次拿到这两个值。float()那一步不能省因为传进来的永远是文字不转成数字后面的减法会报错。输出那两行要注意str()。数字和文字用拼在一起软件会报“不能把数字和字符串相加”先把数字转成文字再拼就没问题了。这个错新手会犯很多次看到报错信息里出现cannot concatenate就往这想。3. 第一次让脚本管上 ArcGIS先创建一个地理处理对象语法过了一遍接下来是最容易卡住的一步脚本凭什么能指挥 ArcGIS答案是先拿一个“地理处理对象”。你把它想成一个遥控器拿到手之后工具箱里成百上千个工具全挂在它身上写一行代码就是按一次按钮。3.1 创建地理处理对象脚本和软件握上的第一下手不同版本的写法略有差别但拿到对象之后的用法几乎一样所以下面的代码里统一用gp这个变量名往下传。# 老一些的版本脚本开头常常这么写 import arcgisscripting gp arcgisscripting.create() # 新一些的版本直接引入 arcpy 就有现成的总对象 import arcpy gp arcpy # 不管哪种写法拿到 gp 之后干的第一件事是设两个环境 gp.workspace c:/prog/hmbarea # 工作空间以后只写文件名不用写全路径 gp.overwriteoutput 1 # 允许覆盖同名结果调试阶段开着一遍遍跑更省事workspace是整个脚本里最值钱的一行。设完之后你写geol.shp就够了不用每次写一长串路径脚本也短、也不容易因为路径拼错而报错。overwriteoutput设成 1 表示同名输出直接覆盖不设的话第二次运行就会因为“输出已存在”而失败——调试的时候你肯定会跑很多次这个开关基本要常开。提示新版本里这两个设置有等价写法arcpy.env.workspace和arcpy.env.overwriteOutput。碰到别人的脚本用的是这个不用慌作用完全一样。还有一个要提前知道的点ArcGIS 里的数据格式不止一种可能是单个 shp 文件可能是地理数据库里的要素类也可能是 coverage。这直接决定了你后面该用ListFeatureClasses还是ListDatasets去遍历。判断不了就先Describe一下看类型这件事后面 3.4 会讲。3.2 工具名后面那个下划线别名到底在区分什么这是新手看脚本时最迷惑的一处为什么工具名长这样Clip_analysis、Buffer_analysis下划线后面那一截是什么答案是同一个工具名可能对应好几个工具。比如“裁剪”分析工具箱里有一个数据管理工具箱里也有一个它们适用的数据类型不一样。在软件界面上你可以凭位置区分在脚本里没有界面只能靠别名区分。所以脚本里工具的全名写法是工具名 下划线 别名。别名对应的工具箱analysis分析工具management数据管理工具conversion转换工具sa空间分析工具arcCoverage 工具cartography制图工具3d三维分析工具stats空间统计工具# 同样是“裁剪”两个工具来自不同工具箱必须靠别名区分 gp.Clip_analysis(geol.shp, stbuff200.shp, geolstr200.shp) # 分析工具里的 gp.Clip_management(geol.shp, stbuff200.shp, geolstr200_out) # 数据管理工具里的 # 如果这一整段只用同一个工具箱可以先声明后面省掉下划线那截 gp.Toolbox analysis gp.Buffer(streams.shp, stbuff200.shp, 200 Meters) gp.Clip(geol.shp, stbuff200.shp, geolstr200.shp)gp.Toolbox analysis是省字数的写法但它只对紧跟其后的工具有效一旦你要用别的工具箱的工具就得重新声明。所以我的建议是初学阶段老老实实写全名等这一段脚本里确实反复用同一个工具箱的五六个工具再考虑简写。省下的那几个字符不值当你为“为什么这个工具突然找不到了”排查半小时。3.3 第一个能跑通的例子三句话完成转换、缓冲、裁剪前面都是铺垫这一段是真正能跑出结果的第一个完整脚本。任务很朴素把一份线数据转成 shp给它做个 200 米缓冲区再用缓冲区把地质图裁出来。import arcpy gp arcpy gp.workspace c:/prog/hmbarea gp.overwriteoutput 1 # 第 1 步把 coverage 里的线要素转成 shp 格式 gp.CopyFeatures_management(streams/arc, streams.shp) # 第 2 步以河流为中心做 200 米缓冲区 gp.Buffer_analysis(streams.shp, stbuff200.shp, 200 Meters) # 第 3 步用缓冲区范围去裁剪地质图 gp.Clip_analysis(geol.shp, stbuff200.shp, geolstr200.shp) print 全部完成一步一步拆开看参数。CopyFeatures_management的两个参数是“输入”和“输出”输入streams/arc里那个斜杠表示 coverage 要素集里的子要素转换时整个写进去就行。Buffer_analysis的三个参数是“输入要素”“输出要素”“距离”距离一定要带单位写成200 Meters只写200的话软件会按数据自身的坐标系单位去理解——这一条是新手翻车重灾区后面避坑那一章还会再提。Clip_analysis的三个参数是“被裁的要素”“裁剪用的范围”“输出”。怎么把这段跑到出结果两个办法。一是直接在软件自带的 Python 窗口里一行一行粘进去回车看反应适合试错。二是把代码存成一个.py文件通过工具箱里的“添加脚本”挂上去配好参数之后就能像拖别的工具一样拖进模型里用——这条路子在 4.1 会详细讲。跑完怎么判断成功先去工作目录里看那三个文件在不在名字对不对再看输出窗口里的消息出现 ERROR 就是没成出现执行完成的字样才算过关。第一次跑建议把overwriteoutput打开错了改完再来一遍不用手动删文件。3.4 动手之前先用 Describe 和 Exists 摸清数据新手写脚本最常见的循环是写完就跑跑完报错改了再跑还错。老手会先花三十秒确认两件事数据在不在、是什么类型。这两件事在脚本里就是Exists和Describe。import arcpy gp arcpy gp.workspace c:/prog/hmbarea # 先判断数据在不在再决定后面跑不跑 if gp.Exists(landuse): desc gp.Describe(landuse) print 数据类型 desc.DataType print 空间参考 desc.SpatialReference.Name else: print 数据不存在先检查工作空间和文件名 # 把属性表里的字段列出来看看 fields gp.ListFields(landuse, *, all) for f in fields: print f.Name, f.TypeExists返回的是真或假放在if里最合适能挡住一大半“文件根本不存在”的报错。Describe拿到的是这份数据的“身份证”DataType告诉你它是栅格还是矢量SpatialReference.Name告诉你它的坐标系ShapeType告诉你它是点、线还是面。ListFields的三个参数分别是表名、通配符*表示全部字段、字段类型all表示所有类型遍历出来的每个字段都有名字和类型。真正让这两个东西值回票价的是放进循环里批量检查。import arcpy gp arcpy gp.workspace c:/prog/hmbarea fcs gp.ListFeatureClasses(w*, polygon) # 只要 w 开头、面类型的要素类 for fc in fcs: if gp.Exists(fc): d gp.Describe(fc) print fc - d.ShapeType # 逐个确认类型再往下处理ListFeatureClasses的两个参数是通配符和要素类型不写就返回全部。这段骨架可以在前面套任意处理动作——缓冲区、投影、裁剪全都行。养成“先看类型再动手”的习惯能帮你省掉大量莫名其妙的报错。4. 让脚本变成一个工具ModelBuilder、调试和批量改数据到这一步你已经能写出跑得出结果的脚本了。但脚本还是躺在编辑器里的文本别人用不了你自己换个参数也得改代码。这一章解决的是“怎么让它变成工具”顺带补上调试和批量改数据这两块最实用的内容。4.1 在 ModelBuilder 里把脚本当成一个工具用关键点只有一个脚本要能从外面接参数而且参数顺序必须和工具属性里配置的顺序完全一致。import sys, arcpy # 顺序必须和工具属性里配置的参数顺序严格对应错一个就全乱 in_fc sys.argv[1] # 参数 1输入的要素 buffer_dist sys.argv[2] # 参数 2缓冲距离带单位 out_fc sys.argv[3] # 参数 3输出的要素 arcpy.Buffer_analysis(in_fc, out_fc, buffer_dist)和 2.4 的写法完全一样只是参数换成了地理处理要用的东西。配好之后在工具里选“添加脚本”把文件路径指过去再在参数页里按顺序加三条把这几个sys.argv一一对上这个脚本就变成一个能被拖来拖去的工具了。这件事的意义在哪图形化模型适合表达“先做什么再做什么”脚本适合表达“重复、判断、循环”。两者结合就是把循环塞进一个方盒子里盒子外面看就是一步。一个模型里挂三四个这样的脚本盒子中间的连线画清楚整个流程就能被人看懂、被人复用。另外一个容易被忽略的事实工具箱里有相当一部分工具本身就是脚本写的。你可以在工具箱里找到它们打开看看内部长什么样改一改当成自己的模板用。这是学写脚本最快的路子之一——不用从空白文件开始造照着改比什么都快。4.2 在 PythonWin 里调试别靠 print 一行行猜脚本一长光靠 print 试错就撑不住了。安装介质里有一个 PythonWin 目录默认是不装的勾上装完就用它来跑脚本。它的价值在三个地方能打断点、能单步走、能直接看变量现在是什么值。import arcpy gp arcpy gp.workspace c:/prog/hmbarea fcs gp.ListFeatureClasses() for fc in fcs: desc gp.Describe(fc) # 在这一行左边点一下打个断点 print fc 是 desc.ShapeType用法很直白在行号左边那一栏双击出现一个红点就是断点按运行键脚本跑到红点那里就停下来这时候把鼠标悬在变量上就能看到它的值也可以在交互窗口里直接敲变量名回车看。确认没问题再按单步一行一行往下走。原来要跑十遍加十次 print 才能定位的错这么走一遍基本就现形了。一个实用的顺序是先在可疑的那一行前打断点看看循环变量现在拿到的是什么文件名、Describe出来的类型对不对再往下走。九成的错误出在“我以为是这个数据其实是那个数据”上断点就是让你亲眼看一眼。4.3 用游标批量读表、改数据前面处理的都是文件层面的东西。真正到“表里的每一条记录都要动一下”就得用游标。游标分三种读的、写的、加的最常用的是前两种。import arcpy gp arcpy gp.workspace c:/prog/hmbarea # 读游标一行一行取属性只读不写 rows gp.SearchCursor(landuse) for row in rows: print row.getValue(CODE), row.getValue(AREA) del rows # 用完一定要释放 # 更新游标把面积小于 100 的记录打个标记 rows gp.UpdateCursor(landuse) for row in rows: if row.getValue(AREA) 100: row.setValue(FLAG, 1) rows.updateRow(row) # 改完必须调一次否则不写回表里 del rowsSearchCursor的两个常用参数是表名和字段列表不写字段就取全部加第三个参数可以带筛选条件比如只取AREA 100的记录。getValue(字段名)取值setValue(字段名, 值)赋值updateRow把这一行的改动提交回去——漏掉这一句你会看到程序跑得很顺、结果一点没变这种沉默的失败最磨人。del rows那一句也不是装饰。游标打开着文件就被占着下一次读写可能直接报“被锁定”。养成“用完就删”的习惯比事后排查锁定问题轻松得多。顺带说一句数据管理这一块建文件夹、复制、删除、改投影脚本里都有对应的工具可以调用思路和 3.3 完全一样输入输出往里填就行。真正需要你判断的还是前面那件事——先Describe看清数据的类型和坐标系再决定用哪个工具。5. 避坑清单新手第一次跑脚本最容易翻的 5 次车这一章里的每一条都是那种“代码看起来一个字都没错结果就是不听话”的情况。看一遍能少熬几个晚上。5.1 一运行就报路径无效反斜杠、工作空间和文件后缀现象脚本一跑就报文件不存在可你明明看到那个文件躺在文件夹里。原因三种可能叠在一起。一是路径里的反斜杠被当成转义字符吃掉了二是忘了设gp.workspace脚本在默认目录里找当然找不到三是文件名没写后缀或者写成了.SHP大写。解决路径统一用正斜杠c:/prog/hmbarea或者前面加r脚本开头先设gp.workspace后面只写文件名后缀一律小写不确定就先os.listdir把文件夹里的名字打出来看一眼照着复制。5.2 跑是跑通了结果位置全错距离没带单位现象缓冲区做出来了但范围大得离谱或者小得几乎看不见。原因Buffer的距离参数只写了数字没写单位软件就按数据自身坐标系的单位去理解。地理坐标系下单位是度你写 200等于 200 度投影坐标系下单位是米那就正常。同一份脚本换个数据就翻车原因就在这。解决距离参数一律写成200 Meters这种带单位的形式动手前先用Describe看一眼SpatialReference.Name确认是地理坐标系还是投影坐标系地理坐标系的数据建议先投影再算距离。5.3 脚本里加了中文就崩编码和注释现象纯英文代码跑得好好的加了一行中文注释或者一个中文输出直接报编码错误。原因脚本文件的保存编码和软件解读的编码对不上中文就被读成了一堆乱码字符语法直接断掉。路径里有中文目录也是同样的问题。解决初学阶段最省事的办法是注释和输出全用英文或者只在文件末尾统一加一小段说明路径里尽量不出现中文目录真需要输出中文先确认文件的保存编码再决定要不要在文件头声明编码。5.4 循环只跑了一遍就停了缩进没对齐现象文件夹里明明有二十个 shp脚本只处理了第一个后面的全没动也不报错。原因处理动作那一行没有缩进到for下面跑到循环外面去了。Python 靠缩进判断“哪些行属于循环”缩进差一格语义就完全变了。解决把光标停在那几行前面看看缩进是不是一致的编辑器里建议统一用四个空格别和 Tab 混用一个稳妥的检查办法是在循环体最后加一句输出当前文件名跑一遍就知道它到底转了几圈。5.5 第二次运行就报“被锁定”游标和覆盖开关现象第一次跑没问题改完再跑就报文件被占用或者“输出已存在”。原因游标用完没释放文件一直被占着或者覆盖开关没打开同名输出不让写。解决每个游标用完补一句del rows脚本开头把gp.overwriteoutput设成 1实在卡住了就关掉软件重开比在那硬碰快得多。6. 下一步学什么从“能跑通”到“能自己写”的三步路学到这里你已经能看懂大部分入门脚本也能改出自己要的效果了。接下来的问题不是“还学什么语法”而是“怎么把学到的东西串成能反复用的东西”。我的建议是按三个小任务往前走一周一个别贪多。6.1 三个递进的小任务任务练到的语法用到的工具把某个文件夹里所有 shp 批量做缓冲区输出到新文件夹for循环、os.listdir、字符串切片取文件名Buffer_analysis读一份属性表把某个字段超过阈值的记录筛出来另存一份if判断、游标读写SearchCursor、CopyFeatures把上面两段合成一个脚本用参数控制输入文件夹和距离挂进工具箱sys.argv、函数封装添加脚本、ModelBuilder第一个任务练的是“遍历”第二个练的是“判断加写回”第三个练的是“把脚本变成别人也能用的工具”。三个都做出来你对这套东西的感觉就完全不一样了——不再是照着抄而是知道每一步为什么这么写。6.2 卡住的时候答案通常在这三个地方第一是软件自带的帮助系统地理处理那一部分里有脚本对象的属性和方法清单工具的参数说明也在里面写得比任何教程都准。第二是工具箱本身很多工具就是脚本写的打开看内部实现比看十篇讲解都管用。第三是脚本跑出来的消息报错信息里通常直接写了是哪个参数、哪个文件出的问题照着关键字去查比盲目改代码快得多。说个我自己的教训。刚开始写脚本那阵我总想着一次写完再跑结果一跑报错面对一百多行代码完全不知道从哪查起一个晚上就耗进去了。后来我强制自己每加三行就跑一次尤其是加完Describe和Exists之后一定先跑一遍把数据的类型和坐标系打出来看一眼确认无误再往下写。慢是慢了点但再也没出现过“跑了半小时才发现数据拿错了”这种事。希望帮到你。本文还有配套的精品资源点击获取
企业数字化 ERP 产品动态
相关推荐
微服务API版本管理:核心挑战与最佳实践 1. 微服务API版本管理的核心挑战微服务架构下API版本管理是个看似简单实则暗藏杀机的问题。我见过太多团队在凌晨三点被生产环境的版本冲突搞到崩溃——客户端调用失败、服务间通信中断、数据格式错乱,这些事故90%都源于三个看似微不足道的错误决策。最近帮某电商平… · 2026/11/3 19:50:29
PyTorch入门指南:从零构建MNIST手写识别网络 1. 为什么选择PyTorch作为神经网络入门框架作为2016年由Facebook AI Research团队推出的开源框架,PyTorch凭借其动态计算图和Pythonic的设计哲学,已经成为学术界和工业界最受欢迎的深度学习工具之一。根据2023年Stack Overflow开发者调查,PyT… · 2026/11/3 19:50:29
八数码BFS求解全流程:状态编码、逆序数判有解与队列优化 简介:面向学习八数码问题与搜索算法的C语言读者,这份文档围绕滑动拼图的状态表示、空格移动规则和宽度优先搜索思路展开,适合作为算法课程实验、课程设计或自学搜索策略时的参考。压缩包内仅含1个doc文件,大小约40KB,篇… · 2026/11/3 19:50:29
SolidCraft 上手指南:开源参数化 3D 建模,免费桌面、网页与 MCP AI 建模 SolidCraft 上手指南:开源参数化 3D 建模,免费桌面、网页与 MCP AI 建模 【免费下载链接】solidcraft SolidCraft: an open-source parametric 3D CAD application built in pure Rust. Desktop, web, and automation through MCP. 项目地址: https://… · 2026/11/4 6:11:22
SAM 3 概念分割深度拆解:一句话如何把图里所有实例都切出来 SAM 3 概念分割深度拆解:一句话如何把图里所有实例都切出来 【免费下载链接】sam3 The repository provides code for running inference and finetuning with the Meta Segment Anything Model 3 (SAM 3), links for downloading the trained model checkpoints, a… · 2026/11/4 6:11:22
LanceDB 性能优化实操指南:让向量检索提速并守住召回率 LanceDB 性能优化实操指南:让向量检索提速并守住召回率 【免费下载链接】lancedb Developer-friendly OSS embedded retrieval library for multimodal AI. Search More; Manage Less. 项目地址: https://gitcode.com/gh_mirrors/la/lancedb
LanceDB 官方基准… · 2026/11/4 6:11:22
XHS-Downloader 小红书内容采集工具:三步完成作品批量保存 XHS-Downloader 小红书内容采集工具:三步完成作品批量保存 【免费下载链接】XHS-Downloader 小红书(XiaoHongShu、RedNote)链接提取/作品采集工具 项目地址: https://gitcode.com/gh_mirrors/xh/XHS-Downloader
XHS-Downloader 是一款… · 2026/11/4 6:11:22
DLSS Swapper 完整指南:如何 5 分钟免费给游戏升级或降级 DLSS 版本 DLSS Swapper 完整指南:如何 5 分钟免费给游戏升级或降级 DLSS 版本 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper
游戏里的 DLSS 版本一直停在旧构建,你不想等官方补丁;或者新版画… · 2026/11/4 6:11:22
345 个型号实测:CleanYourTV 用 AI 给电视去广告,全程可还原 345 个型号实测:CleanYourTV 用 AI 给电视去广告,全程可还原 【免费下载链接】cleanyourtv Debloat any Android or Google TV over Wi-Fi and get an Apple TV-style home. 项目地址: https://gitcode.com/gh_mirrors/tv/cleanyourtv
电视一开机… · 2026/11/4 6:10:22
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46
AI辅助技术栈评估:提升研发决策效率60% 1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17
从生成Token到直接决策:Jev如何重塑AI Agent工程实践 1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17
32G统一内存跑大模型:内存账、TPS实测与端云分流 想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46