Pandas DataFrame.drop方法深度解析:从数据清洗翻车到精准操作
1. 从一次数据清洗的“翻车”经历说起那天下午我正处理一份从业务系统导出的用户行为日志数据量不大也就几十万行。我需要清理掉一些测试账号产生的记录以及几个在分析中用不上的字段比如内部的session_id和debug_flag。这听起来是个再简单不过的任务不就是用pandas的drop方法删几行、去几列吗我随手写下了类似df.drop(index[1, 2, 3], columns[‘debug_flag’], inplaceTrue)的代码运行一切看似正常。直到我把处理后的数据交给下游做报表才发现出了问题几个关键的用户分组统计结果对不上。经过一番焦头烂额的排查我才意识到问题就出在那句看似无害的drop上。我错误地使用了默认的索引标签来删除行而我的DataFrame在之前的某个步骤中索引已经被重置过不再是连续的整数。我以为我删除了第1、2、3行原始数据中的测试记录但实际上pandas在按标签删除时找不到标签为1、2、3的行它静默地忽略了这些不存在的标签默认没有报错。结果就是该删的测试数据一条没少而后续基于行号的切片操作却可能误删了其他有效数据。这次“翻车”让我付出了额外两小时排查的代价但也让我彻底明白pandas.DataFrame.drop这个方法远不是“删除”两个字看起来那么简单。它涉及到pandas核心的索引机制、数据视图与副本的哲学以及一系列需要明确指定的参数。用好了它是数据清洗的利器用岔了它可能就是埋下隐患的陷阱。今天我就结合自己多年的数据处理经验把DataFrame.drop这个方法里里外外、掰开揉碎了讲清楚让你不仅能学会怎么用更能理解为什么这么用以及如何避开我踩过的那些坑。2. 理解drop的核心它到底在操作什么在深入参数和技巧之前我们必须建立一个正确的认知DataFrame.drop本质上是对索引标签Labels的操作而不是对物理行号/列位置的直接操作。这是理解其所有行为差异的基石。pandas的DataFrame有两套“坐标系统”一套是隐式的、连续的整数位置iloc另一套是显式的、可以任意定义的索引标签loc。drop方法默认工作在后一套系统上。举个例子我们创建一个简单的DataFrameimport pandas as pd df pd.DataFrame({ A: [1, 2, 3, 4], B: [5, 6, 7, 8], C: [9, 10, 11, 12] }, index[x, y, z, w]) # 指定自定义索引 print(df)输出A B C x 1 5 9 y 2 6 10 z 3 7 11 w 4 8 12这个DataFrame的隐式位置是 0, 1, 2, 3但它的显式索引标签是 ‘x‘, ’y‘, ’z‘, ’w‘。当你调用df.drop(‘y’)时pandas会在索引标签中寻找 ‘y‘然后删除对应的那一整行。它并不关心这一行在物理上是第几行。为什么设计成这样这源于pandas的设计哲学数据应该可以通过有意义的标签如用户ID、时间戳、产品编号来访问和操作而不仅仅是冷冰冰的序号。这为数据对齐、合并等高级操作提供了极大的便利。但这也要求我们在使用drop时必须非常清楚自己当前DataFrame的索引状态。注意如果你的DataFrame没有指定索引pandas会自动生成一个从0开始的整数索引。此时标签和位置在数值上巧合地一致但这并没有改变drop按标签工作的本质。一旦索引被重置reset_index、设置set_index或经过筛选排序标签与位置的对应关系就可能被打破这时如果还按位置思维去drop就会出错。3. 删除行index参数的四种武器与一个陷阱删除行是drop最常用的场景之一。通过index参数你可以指定要删除的行的标签。指定方式灵活多样但各有其适用场景和注意事项。3.1 删除单行或多行列表与标量的博弈最直接的方式是传递一个行标签或一个包含多个行标签的列表。# 删除单行标签为‘y’的行 df_dropped_single df.drop(y) print(“删除单行‘y’”) print(df_dropped_single) # 删除多行标签为‘y’和‘w’的行 df_dropped_multi df.drop([y, w]) print(“\n删除多行[‘y‘, ’w‘]”) print(df_dropped_multi)输出删除单行‘y’ A B C x 1 5 9 z 3 7 11 w 4 8 12 删除多行[‘y‘, ’w‘] A B C x 1 5 9 z 3 7 11这里有一个关键细节df.drop(‘y’)返回的是一个新的DataFrame原始的df并没有被改变。这是pandas许多方法的默认行为旨在避免意外修改原始数据。如果你确认要修改原数据需要设置inplaceTrue参数我们稍后会详细讨论。3.2 使用整数位置删除行iloc的黄金搭档如果我只有行的整数位置比如第0行和第2行该如何删除直接df.drop([0, 2])行吗这取决于索引。如果df的索引是默认的0,1,2,3那么df.drop([0, 2])可以工作因为它把[0, 2]当作标签来处理而恰好存在这些标签。但如果索引是自定义的[‘x‘, ’y‘, ’z‘, ’w‘]df.drop([0, 2])就会静默失败因为标签0和2不存在。正确的做法是先获取这些位置的标签再用drop。而.iloc索引器就是用来基于整数位置进行选择的。# 假设我们想删除第0行和第2行基于位置 index_to_drop df.iloc[[0, 2]].index # 获取这些位置对应的索引标签 print(“要删除的索引标签”, index_to_drop.tolist()) df_dropped_by_pos df.drop(index_to_drop) print(df_dropped_by_pos)输出要删除的索引标签 [‘x‘, ’z‘] A B C y 2 6 10 w 4 8 12这种方法虽然多了一步但逻辑清晰绝不犯错。它明确表达了“我想删除这些位置上的行无论它们的标签是什么”。3.3 使用条件删除行drop与布尔索引的配合更常见的场景是我们希望删除满足某些条件的行比如删除“年龄小于18”或“销售额为0”的记录。drop方法本身不直接接受条件表达式但我们可以巧妙地结合布尔索引来实现。核心思路先通过条件筛选出要删除的行的索引然后传递给drop。# 示例删除列A中值大于2的所有行 condition df[A] 2 index_to_drop df[condition].index print(“满足条件A2的行索引”, index_to_drop.tolist()) df_dropped_by_cond df.drop(index_to_drop) print(df_dropped_by_cond)输出满足条件A2的行索引 [‘z‘, ’w‘] A B C x 1 5 9 y 2 6 10这种方法非常强大且直观。它分离了“筛选逻辑”和“删除动作”使得代码易于理解和调试。你也可以组合多个条件使用与、|或、~非进行连接。3.4 陷阱静默忽略与errors参数还记得我开头的“翻车”经历吗其根源就是drop默认的errors‘ignore‘行为。当提供的标签在索引中不存在时pandas默认不会抛出错误而是忽略这些标签。# 尝试删除一个不存在的标签 ‘m‘ result df.drop(‘m’) # 默认 errors‘ignore‘ print(“尝试删除不存在的‘m‘默认”) print(result) # 原数据毫发无损 # 设置 errors‘raise‘ 让错误暴露出来 try: result df.drop(‘m’, errors‘raise‘) except KeyError as e: print(f“尝试删除不存在的‘m‘raise模式引发KeyError: {e}”)我的经验是在重要的数据清洗步骤中显式设置errors‘raise‘。这能让你立刻发现索引不匹配的问题而不是让错误潜伏下来在后续流程中引发更难以调试的异常。这就像编程中的“快速失败”原则越早暴露问题成本越低。4. 删除列columns参数与axis轴的抉择删除列与删除行在逻辑上完全对称只是操作维度不同。你可以通过columns参数指定列名也可以通过axis参数来指定操作轴。4.1 使用columns参数推荐这是最清晰、最不易混淆的方式。# 删除单列 ‘B‘ df_dropped_col_single df.drop(columns‘B’) print(“删除单列‘B‘”) print(df_dropped_col_single) # 删除多列 ‘A‘ 和 ‘C‘ df_dropped_col_multi df.drop(columns[‘A‘, ’C‘]) print(“\n删除多列[‘A‘, ’C‘]”) print(df_dropped_col_multi)输出删除单列‘B‘ A C x 1 9 y 2 10 z 3 11 w 4 12 删除多列[‘A‘, ’C‘] B x 5 y 6 z 7 w 84.2 使用axis参数需谨慎axis参数决定了操作的方向axis0或axis‘index‘操作行默认值。axis1或axis‘columns‘操作列。因此删除列也可以写成df_dropped_col_axis df.drop([‘A‘, ’C‘], axis1) # 等价于 df.drop(columns[‘A‘, ’C‘])为什么不推荐当代码中同时出现index和axis参数时可读性会变差。df.drop([‘A‘, ’C‘], axis1)对于不熟悉pandas的人来说需要反应一下才知道是在删列。而df.drop(columns[‘A‘, ’C‘])则一目了然。在团队协作或编写需要长期维护的代码时清晰性比少打几个字更重要。4.3 列操作的“静默忽略”与行操作类似尝试删除不存在的列默认也会被静默忽略。# 尝试删除不存在的列 ‘D‘ result df.drop(columns‘D’) # 默认 errors‘ignore‘ print(“尝试删除不存在的列‘D‘”) print(result) # 原数据不变同样的建议在关键步骤考虑使用errors‘raise‘。5.inplaceTrue便利与风险的权衡这是drop方法乃至很多pandas方法中最具争议的参数之一。inplaceTrue意味着直接在原DataFrame上进行修改而不是返回一个新的副本。# 使用 inplaceTrue df_inplace df.copy() # 先复制一份避免影响原来的df print(“原始 df_inplace”) print(df_inplace) df_inplace.drop(‘y’, inplaceTrue) print(“\n执行 df_inplace.drop(‘y‘, inplaceTrue) 后”) print(df_inplace)输出原始 df_inplace A B C x 1 5 9 y 2 6 10 z 3 7 11 w 4 8 12 执行 df_inplace.drop(‘y‘, inplaceTrue) 后 A B C x 1 5 9 z 3 7 11 w 4 8 12便利性代码简洁无需将结果赋值给新变量。对于交互式数据分析或脚本中的单次操作可能很方便。风险与弊端不可逆操作一旦执行原始数据就被改变除非你事先做了备份。不利于链式调用pandas的许多方法支持链式调用如df.query(…).groupby(…).mean()inplaceTrue会中断这种流畅的语法因为它返回None。可能引发混淆在复杂的函数或流程中如果多个地方引用了同一个DataFrameinplace修改可能会产生难以预料的副作用。性能误区很多人认为inplaceTrue更省内存。在早期版本的pandas中可能如此但在现代版本中即使inplaceFalse底层也可能通过写时复制Copy-on-Write等优化技术来避免不必要的内存复制。性能差异通常微乎其微不应作为选择的首要理由。我的个人实践是除非在非常简单的、一次性的脚本中否则尽量避免使用inplaceTrue。我更倾向于使用df df.drop(…)这种形式。它明确地创建了一个新的数据视图让数据流的变化更加清晰也更容易调试。尤其是在Jupyter Notebook中你可以轻松地对比操作前后的DataFrame。6. 实战进阶复杂场景下的drop应用与避坑指南掌握了基础我们来看几个更复杂的实际场景这些正是容易踩坑的地方。6.1 处理多层索引MultiIndex的DataFrame当你的DataFrame拥有多层行索引或列索引时drop的用法需要稍作调整。# 创建一个具有多层列索引的 DataFrame import numpy as np arrays [[‘A‘, ’A‘, ’B‘, ’B‘], [‘one‘, ’two‘, ’one‘, ’two‘]] tuples list(zip(*arrays)) index pd.MultiIndex.from_tuples(tuples, names[‘first‘, ’second‘]) df_multi pd.DataFrame(np.random.randn(3, 4), index[‘X‘, ’Y‘, ’Z‘], columnsindex) print(“多层列索引 DataFrame”) print(df_multi)输出示例first A B second one two one two X 0.469112 -0.282863 -1.509059 -1.135632 Y 1.212112 -0.173215 0.119209 -1.044236 Z -0.861849 -2.104569 -0.494929 1.071804要删除整个 ‘A‘ 列以及其下的 ‘one‘, ’two‘ 子列不能直接drop(‘A‘)因为 ‘A‘ 是第一层索引。你需要传递一个元组来指定要删除的完整路径或者使用level参数。# 方法1传递元组不常用因为要知道具体组合 # df_multi_dropped df_multi.drop((‘A‘, ’one‘), axis1) # 只删除(‘A‘, ’one‘)这一列 # 方法2使用 level 参数删除整个第一层为 ‘A‘ 的列 # 这需要一点技巧先获取列索引筛选再drop cols_to_drop df_multi.columns[df_multi.columns.get_level_values(0) ‘A‘] df_multi_dropped df_multi.drop(cols_to_drop, axis1) print(“\n删除第一层为‘A‘的列后”) print(df_multi_dropped)对于多层索引更通用的方法是使用.xs(cross-section) 进行选取或者直接通过.loc索引器进行复杂的切片。drop在这种情况下可能不是最直观的工具。6.2 与loc/iloc赋值删除法的对比除了drop我们还可以通过赋值NaN或使用.loc/.iloc结合布尔索引来“模拟”删除。但这有本质区别。# 方法A使用 drop 删除行 ‘y‘ df_a df.copy() df_a df_a.drop(‘y’) # 方法B使用 loc 赋值 NaN然后可能再 dropna df_b df.copy() df_b.loc[‘y‘, :] np.nan # 此时 df_b 仍然有 ‘y‘ 这一行但值全是 NaN print(“方法B赋值NaN后”) print(df_b) # 如果需要真正删除还需df_b df_b.dropna()区别drop是结构性删除直接移除该行/列DataFrame的形状shape会改变。赋值NaN是数据性替换行/列依然存在只是值变了。后续可能需要dropna()来清理这增加了步骤。在绝大多数需要删除整行或整列的场景下直接使用drop更高效、意图更明确。6.3 性能考量大数据集下的删除当处理数百万行以上的大数据集时频繁使用drop来删除单行或少数行可能会成为性能瓶颈因为每次drop都可能涉及底层数组的重新分配和复制。优化策略批量删除尽可能将要删除的索引收集到一个列表中然后一次性调用drop而不是在循环中多次调用。# 不佳在循环中多次drop # indices_to_drop [] # for idx in df.index: # if some_condition(df.loc[idx]): # df.drop(idx, inplaceTrue) # 每次drop都触发操作 # 更佳收集索引一次性drop indices_to_drop [] for idx in df.index: if some_condition(df.loc[idx]): indices_to_drop.append(idx) df df.drop(indices_to_drop)使用布尔索引反向选择直接选取需要保留的行这通常比先找出要删除的行再drop更高效。# 假设要删除 ‘A‘ 列值大于2的行 # 方法drop # index_to_drop df[df[‘A‘] 2].index # df df.drop(index_to_drop) # 方法反向选择保留 df df[~(df[‘A‘] 2)] # 使用 ~ 取反反向选择在语法上更简洁在性能上pandas对布尔索引有很好的优化。7. 融会贯通一个完整的数据清洗案例让我们通过一个模拟的真实案例串联起drop的各种用法。假设我们有一份销售数据sales_df需要清洗以备分析。import pandas as pd import numpy as np # 模拟数据 np.random.seed(42) dates pd.date_range(‘20230101‘, periods100, freq‘D‘) sales_df pd.DataFrame({ ‘date‘: dates, ‘product_id‘: np.random.choice([‘P001‘, ’P002‘, ’P003‘, ’P004‘, ’P005‘], 100), ‘region‘: np.random.choice([‘North‘, ’South‘, ’East‘, ’West‘], 100), ‘salesperson_id‘: np.random.choice([‘S01‘, ’S02‘, ’S03‘, ’test_user‘, ’admin‘], 100), # 包含测试账号 ‘quantity‘: np.random.randint(1, 100, 100), ‘unit_price‘: np.random.uniform(10, 200, 100).round(2), ‘discount‘: np.random.choice([0, 0.05, 0.1, 0.15], 100), ‘internal_note‘: [‘’] * 100 # 内部备注列分析用不上 }) sales_df[‘total_sales‘] sales_df[‘quantity‘] * sales_df[‘unit_price‘] * (1 - sales_df[‘discount‘]) sales_df.loc[10:15, ‘quantity‘] -1 # 插入一些无效的负数量 sales_df.loc[[20, 50], ‘region‘] ‘Unknown‘ # 插入一些未知区域 print(“原始数据概览”) print(sales_df.head()) print(f“\n原始数据形状{sales_df.shape}”)清洗目标删除测试账号‘test_user‘, ’admin‘产生的所有记录。删除无效数据quantity 0 的行。删除‘Unknown‘区域的记录业务上无法归类。删除分析用不上的列internal_note。确保操作安全任何标签不存在时应报错。清洗代码# 1. 备份原始数据好习惯 sales_df_clean sales_df.copy() # 2. 删除测试账号记录 - 使用条件删除 test_users [‘test_user‘, ’admin‘] mask_test sales_df_clean[‘salesperson_id‘].isin(test_users) index_to_drop_test sales_df_clean[mask_test].index sales_df_clean sales_df_clean.drop(index_to_drop_test, errors‘raise‘) # 安全起见设置 errors‘raise‘ print(f“删除测试账号记录后行数{len(sales_df_clean)}”) # 3. 删除无效数量记录 mask_invalid_qty sales_df_clean[‘quantity‘] 0 index_to_drop_qty sales_df_clean[mask_invalid_qty].index sales_df_clean sales_df_clean.drop(index_to_drop_qty, errors‘raise‘) print(f“删除无效数量记录后行数{len(sales_df_clean)}”) # 4. 删除未知区域记录 mask_unknown_region sales_df_clean[‘region‘] ‘Unknown‘ index_to_drop_region sales_df_clean[mask_unknown_region].index sales_df_clean sales_df_clean.drop(index_to_drop_region, errors‘raise‘) print(f“删除未知区域记录后行数{len(sales_df_clean)}”) # 5. 删除无用列 columns_to_drop [‘internal_note‘] # 检查列是否存在避免静默忽略 for col in columns_to_drop: if col not in sales_df_clean.columns: raise KeyError(f“列 ‘{col}‘ 在 DataFrame 中不存在请检查列名。”) sales_df_clean sales_df_clean.drop(columnscolumns_to_drop, errors‘raise‘) print(f“删除无用列后列信息{list(sales_df_clean.columns)}”) print(f“\n最终清洗后数据形状{sales_df_clean.shape}”) print(“\n清洗后数据前5行”) print(sales_df_clean.head())这个案例展示了如何将多种drop技巧组合起来完成一个完整的数据清洗流程。关键点在于先通过条件筛选出要删除的目标再执行drop并且在整个过程中使用errors‘raise‘来确保操作的准确性。同时在删除列之前手动检查列名是否存在这是一个额外的安全措施。8. 总结与核心心法回顾DataFrame.drop的整个使用过程我们可以提炼出几条核心心法这比记住所有参数更重要标签思维优先时刻记住drop操作的是索引标签不是物理位置。在操作前先用df.index和df.columns看一眼当前的标签状态。条件删除是黄金模式对于按条件删除行df.drop(df[condition].index)是标准且安全的模式。它逻辑清晰将复杂的筛选条件和简单的删除动作解耦。警惕静默忽略默认的errors‘ignore‘是许多隐蔽错误的源头。在关键的数据准备阶段主动设置errors‘raise‘让问题尽早暴露。慎用inplace除非在一次性、简单的脚本中否则尽量避免。使用df df.drop(…)的赋值形式让数据流的变化有迹可循更利于代码的维护和调试。列操作显式化删除列时优先使用columns参数df.drop(columns[…])这比使用axis1意图更明确可读性更强。性能意识对于大规模数据避免在循环中调用drop。尽量收集所有要删除的索引一次性操作或考虑使用布尔索引进行反向选择。数据处理就像做手术drop就是手术刀。一把锋利且被熟练掌握的手术刀能精准地切除“坏死组织”无效数据保留健康的“器官”有效信息。而掌握它的要诀不在于记住所有复杂的招式而在于理解其设计哲学标签系统养成严谨的操作习惯显式、报错、备份并在不断的实践中积累对边界情况的敏感度。希望我分享的这些经验和踩过的坑能让你在使用这把“手术刀”时更加得心应手游刃有余。

相关新闻

Java内存泄漏排查实战:从OOM到MAT深度分析全流程

Java内存泄漏排查实战:从OOM到MAT深度分析全流程

1. 从一次线上OOM事故说起:为什么我们需要MAT那天凌晨,我被一阵急促的告警电话惊醒。监控显示,我们一个核心的Java服务内存使用率在短短十分钟内从60%飙升到98%,随后触发了Full GC,但回收效果甚微,最终进程…

2026/8/17 21:13:22 阅读更多 →
为什么MT6789连接总是卡死?替换一个DA文件就解决了

为什么MT6789连接总是卡死?替换一个DA文件就解决了

为什么MT6789连接总是卡死?替换一个DA文件就解决了 【免费下载链接】mtkclient MTK reverse engineering and flash tool 项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient 现象速写:这台手机像在装死 我手上这台 MTK Helio G99&#xff…

2026/8/17 21:13:22 阅读更多 →
C++运算符重载:从语法糖到语义核心的工程实践指南

C++运算符重载:从语法糖到语义核心的工程实践指南

1. 从“语法糖”到“语义核心”:为什么我们需要运算符重载?刚接触C的运算符重载时,很多朋友的第一反应是:这玩意儿不就是给类写个函数,让对象也能像整数一样用、-吗?看起来像是一种“语法糖”,让…

2026/8/17 21:13:22 阅读更多 →

最新新闻

VFEAgent:多模态AI智能体如何实现工程仿真全流程自动化

VFEAgent:多模态AI智能体如何实现工程仿真全流程自动化

1. 项目概述:当AI智能体遇上工程仿真 最近在工程仿真圈子里,一个概念正被频繁讨论:能否让AI像一位经验丰富的工程师一样,从一张设计草图甚至一段自然语言描述开始,自动完成从几何处理、网格划分、物理场设置、求解到后…

2026/8/18 23:50:24 阅读更多 →
丰田GR 86箱根特别版:解码汽车文化符号营销与用户情感连接

丰田GR 86箱根特别版:解码汽车文化符号营销与用户情感连接

1. 从“箱根”到“特别版”:一次关于汽车文化符号的解码 最近,丰田发布了GR 86的“箱根特别版”(Hakone Edition),这个名字一出来,很多车迷,尤其是对日本汽车文化有点了解的朋友,脑子…

2026/8/18 23:50:24 阅读更多 →
LLaMA-Factory实战:从零微调Qwen大模型,环境配置到效果验证全指南

LLaMA-Factory实战:从零微调Qwen大模型,环境配置到效果验证全指南

这类工具最值得先看的不是功能列表,而是能不能在普通环境里稳定跑起来,以及微调之后模型到底能不能记住你教的东西。LLaMA-Factory 就是一个把大模型微调这件事,从“需要写一堆代码和脚本”变成“填几个参数、点几下就能跑”的工具。它支持 Q…

2026/8/18 23:50:24 阅读更多 →
高并发场景下的缓存更新难题:乐观并发缓存的设计与实现

高并发场景下的缓存更新难题:乐观并发缓存的设计与实现

1. 这篇文章真正要解决的问题 如果你正在开发一个高并发的在线服务,比如电商秒杀、实时竞价或者高频交易系统,那么你一定遇到过这个经典难题: 如何安全、高效地更新缓存? 传统的缓存更新策略,无论是“先更新数据库&…

2026/8/18 23:50:24 阅读更多 →
特斯拉MODEL X中央扶手箱设计缺陷:用户体验的细节短板

特斯拉MODEL X中央扶手箱设计缺陷:用户体验的细节短板

1. 从一次尴尬的体验说起:被“神化”的扶手箱 作为一名开了十几年车、也深度体验过不少新能源车型的老司机,我最近帮朋友提了一台特斯拉MODEL X。提车前的兴奋,在真正开始日常使用后,很快被一些细节上的“别扭”冲淡了不少。其中最…

2026/8/18 23:50:24 阅读更多 →
构建智能体专用查询引擎:从意图理解到执行优化的实战指南

构建智能体专用查询引擎:从意图理解到执行优化的实战指南

1. 项目概述:为智能体构建一个专属的“搜索引擎” 最近在折腾各种AI智能体(Agents)项目,无论是基于LLM的自主智能体,还是多智能体协作框架,我发现一个共通的痛点越来越明显: 智能体“知道”的很…

2026/8/18 23:49:24 阅读更多 →

日新闻

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 如果你还停留在"看网课 不停暂停 截图 …

2026/8/18 0:00:57 阅读更多 →
思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 你是不是也经历过这种时刻:设计稿里…

2026/8/18 0:00:58 阅读更多 →
华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, …

2026/8/18 0:00:59 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/18 9:15:35 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/18 9:06:28 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/18 9:04:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/17 18:54:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/17 18:55:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/17 18:55:55 阅读更多 →