Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
Pandas高效聚合:利用pivot和广播操作简化复杂数据转换_创想鸟

Pandas高效聚合:利用pivot和广播操作简化复杂数据转换

Pandas高效聚合:利用pivot和广播操作简化复杂数据转换

本教程旨在解决Pandas数据处理中常见的重复性过滤、选择和合并操作问题。通过深入讲解pivot函数将长格式数据转换为宽格式,并结合Pandas的广播机制进行高效的元素级计算,最终实现数据聚合的简洁化和性能优化。文章将提供详细的代码示例,帮助读者掌握利用pivot和链式操作实现复杂数据转换的最佳实践,显著提升代码可读性和执行效率。

在数据分析和处理过程中,我们经常需要对dataframe进行复杂的聚合操作,例如基于多个条件筛选数据,然后进行计算并合并结果。当这些操作需要重复执行多次,仅仅是条件参数不同时,代码会变得冗长、难以维护且效率低下。本文将介绍一种更优雅、高效的pandas方法,利用pivot函数和广播机制来简化此类复杂的数据聚合任务。

原始问题与挑战

考虑以下场景:我们有一个包含酶(enzyme)、区域类型(regions)、N值(N)和长度(length)的统计数据集。我们的目标是计算特定条件下长度值的差异,例如 captured 区域 N=50 的长度减去 all 区域 N=50 的长度,以及 captured 区域 N=90 的长度减去 all 区域 N=50 的长度。

以下是原始的、具有重复性的代码实现方式:

import ioimport pandas as pdTESTDATA="""enzyme  regions   N   lengthAaaI    all       10  238045AaaI    all       20  170393AaaI    all       30  131782AaaI    all       40  103790AaaI    all       50  81246AaaI    all       60  62469AaaI    all       70  46080AaaI    all       80  31340AaaI    all       90  17188AaaI    captured  10  292735AaaI    captured  20  229824AaaI    captured  30  193605AaaI    captured  40  163710AaaI    captured  50  138271AaaI    captured  60  116122AaaI    captured  70  95615AaaI    captured  80  73317AaaI    captured  90  50316AagI    all       10  88337AagI    all       20  19144AagI    all       30  11030AagI    all       40  8093AagI    all       50  6394AagI    all       60  4991AagI    all       70  3813AagI    all       80  2759AagI    all       90  1666AagI    captured  10  34463AagI    captured  20  19220AagI    captured  30  15389AagI    captured  40  12818AagI    captured  50  10923AagI    captured  60  9261AagI    captured  70  7753AagI    captured  80  6201AagI    captured  90  4495"""df_stats = pd.read_csv(io.StringIO(TESTDATA), sep='s+')# 筛选并准备数据df_cap_N90 = df_stats[(df_stats['N'] == 90) & (df_stats['regions'] == 'captured')].drop(columns=['regions', 'N'])df_cap_N50 = df_stats[(df_stats['N'] == 50) & (df_stats['regions'] == 'captured')].drop(columns=['regions', 'N'])df_all_N50 = df_stats[(df_stats['N'] == 50) & (df_stats['regions'] == 'all')     ].drop(columns=['regions', 'N'])# 执行合并和计算df_summ_cap_N50_all_N50 = pd.merge(df_cap_N50, df_all_N50, on='enzyme', how='inner', suffixes=('_cap_N50', '_all_N50'))df_summ_cap_N50_all_N50['cap_N50_all_N50'] = (df_summ_cap_N50_all_N50['length_cap_N50'] -                                              df_summ_cap_N50_all_N50['length_all_N50'])df_summ_cap_N90_all_N50 = pd.merge(df_cap_N90, df_all_N50, on='enzyme', how='inner', suffixes=('_cap_N90', '_all_N50'))df_summ_cap_N90_all_N50['cap_N90_all_N50'] = df_summ_cap_N90_all_N50['length_cap_N90'] - df_summ_cap_N90_all_N50['length_all_N50']# 最终合并结果df_summ = pd.merge(df_summ_cap_N50_all_N50.drop(columns=['length_cap_N50', 'length_all_N50']),                   df_summ_cap_N90_all_N50.drop(columns=['length_cap_N90', 'length_all_N50']),                   on='enzyme', how='inner')print(df_summ)

这种方法的问题在于:

代码重复性高:针对每个需要比较的组合,都需要进行独立的筛选、drop列、merge操作。效率低下:频繁创建中间DataFrame和执行merge操作,对于大数据集而言会产生显著的性能开销。可读性差:代码逻辑被分散在多个步骤中,难以一眼看出整体的数据转换意图。扩展性差:如果需要增加更多的比较组合(例如 cap_N70_all_N30),则需要复制大量代码并进行修改。

Pandas高效聚合策略:pivot与广播操作

为了解决上述问题,我们可以利用Pandas的pivot函数将数据重塑为宽格式,然后利用其强大的广播机制进行高效的列间计算。

1. 理解pivot函数进行数据重塑

pivot函数可以将DataFrame从“长格式”转换为“宽格式”,这对于进行多维度的数据分析非常有用。它通过指定一个或多个列作为新的索引(index)、一个或多个列作为新的列标签(columns),以及一个列作为填充新单元格的值(values)来实现。

首先,我们筛选出所有需要参与计算的 N 值(这里是50和90),以避免不必要的计算量。

# 筛选出N为50或90的数据filtered_df = df_stats.loc[df_stats["N"].isin([50, 90])]# 使用pivot将数据重塑为宽格式# enzyme 作为新DataFrame的索引# regions 和 N 的组合作为新DataFrame的列# length 列的值填充到新DataFrame的单元格中pivoted_df = filtered_df.pivot(index="enzyme", columns=["regions", "N"], values="length")print("重塑后的DataFrame (pivoted_df):")print(pivoted_df)

输出的 pivoted_df 将是一个具有多级列索引的DataFrame,其结构如下:

regions    all       captured    N           50    90       50    90enzyme                             AaaI     81246 17188   138271 50316AagI      6394  1666    10923  4495

现在,我们所需的所有 length 值都以宽格式排列,并且可以通过多级列索引轻松访问。

2. 利用广播机制进行高效计算

Pandas的算术运算支持广播(broadcasting),这意味着当操作两个具有不同维度但兼容形状的Series或DataFrame时,Pandas会自动扩展较小的对象以匹配较大的对象。这使得我们能够非常简洁地执行列与列之间的计算。

在我们的案例中,我们需要计算 captured 区域的 N=50 和 N=90 的长度分别减去 all 区域 N=50 的长度。

# 提取 'captured' 区域的所有N值对应的长度captured_lengths = pivoted_df["captured"]# 提取 'all' 区域 N=50 对应的长度 (这是一个Series)all_N50_length = pivoted_df[("all", 50)]# 使用 .sub() 方法进行广播减法# captured_lengths 是一个DataFrame,all_N50_length 是一个Series# Pandas 会将 all_N50_length 广播到 captured_lengths 的每一列进行减法# axis=0 表示按行对齐索引进行操作result_diff = captured_lengths.sub(all_N50_length, axis=0)print("n计算差异后的DataFrame (result_diff):")print(result_diff)

输出的 result_diff 如下:

N           50      90enzyme                AaaI     57025  -30930AagI      4529   -1899

可以看到,一步操作就完成了所有必要的减法,并且结果DataFrame的索引和列都已正确对齐。

3. 结果列的重命名与整理

最后一步是根据要求重命名结果列,并将索引转换为常规列。

# 重命名列:先添加前缀 'cap_N',再添加后缀 '_all_N50'# N=50 -> cap_N50 -> cap_N50_all_N50# N=90 -> cap_N90 -> cap_N90_all_N50final_df = result_diff.add_prefix("cap_N").add_suffix("_all_N50")# 将索引 'enzyme' 转换为常规列final_df = final_df.reset_index()print("n最终聚合结果 (final_df):")print(final_df)

最终输出:

  enzyme  cap_N50_all_N50  cap_N90_all_N500   AaaI            57025           -309301   AagI             4529            -1899

这与原始方法得到的 df_summ 结果完全一致,但代码量大幅减少,逻辑更加清晰。

完整代码示例

将上述步骤整合到一起,得到简洁高效的解决方案:

import ioimport pandas as pdTESTDATA="""enzyme  regions   N   lengthAaaI    all       10  238045AaaI    all       20  170393AaaI    all       30  131782AaaI    all       40  103790AaaI    all       50  81246AaaI    all       60  62469AaaI    all       70  46080AaaI    all       80  31340AaaI    all       90  17188AaaI    captured  10  292735AaaI    captured  20  229824AaaI    captured  30  193605AaaI    captured  40  163710AaaI    captured  50  138271AaaI    captured  60  116122AaaI    captured  70  95615AaaI    captured  80  73317AaaI    captured  90  50316AagI    all       10  88337AagI    all       20  19144AagI    all       30  11030AagI    all       40  8093AagI    all       50  6394AagI    all       60  4991AagI    all       70  3813AagI    all       80  2759AagI    all       90  1666AagI    captured  10  34463AagI    captured  20  19220AagI    captured  30  15389AagI    captured  40  12818AagI    captured  50  10923AagI    captured  60  9261AagI    captured  70  7753AagI    captured  80  6201AagI    captured  90  4495"""df_stats = pd.read_csv(io.StringIO(TESTDATA), sep='s+')# 链式操作实现高效聚合df_summ_optimized = (    df_stats.loc[df_stats["N"].isin([50, 90])] # 筛选相关N值    .pivot(index="enzyme", columns=["regions", "N"], values="length") # 重塑数据    .pipe(lambda piv: piv["captured"].sub(piv[("all", 50)], axis=0)) # 执行广播减法    .add_prefix("cap_N") # 添加前缀    .add_suffix("_all_N50") # 添加后缀    .reset_index() # 将索引转换为列)print(df_summ_optimized)

优势与注意事项

代码简洁性与可读性:通过链式方法调用,将复杂的逻辑组织成清晰的步骤,大大减少了代码量,提高了代码的可读性和可维护性。性能提升:避免了多次创建中间DataFrame和昂贵的merge操作。pivot和广播操作在底层通常经过高度优化,对于处理大数据集具有显著的性能优势。灵活性与扩展性:如果需要添加更多计算组合,例如 cap_N70_all_N30,只需修改 isin() 中的 N 值列表,并在 pipe 阶段增加相应的计算逻辑,无需重写大量重复代码。注意事项:pivot函数要求 index 和 columns 的组合必须是唯一的,否则会抛出 ValueError。如果存在重复组合,应考虑使用 pivot_table,它允许指定聚合函数(如 mean, sum 等)来处理重复值。理解多级列索引是使用 pivot 结果的关键。通过 pivoted_df[“level1”] 或 pivoted_df[(“level1”, “level2”)] 可以灵活访问数据。在进行广播操作时,确保理解 axis 参数的含义。axis=0 表示按行(索引)进行操作,axis=1 表示按列进行操作。

总结

通过本教程,我们学习了如何利用Pandas的pivot

以上就是Pandas高效聚合:利用pivot和广播操作简化复杂数据转换的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1370718.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Pandas 数据聚合优化:利用 Pivot 提升效率与代码简洁性
上一篇 2025年12月14日 10:47:23
Pandas数据透视与向量化操作:高效聚合复杂数据集
下一篇 2025年12月14日 10:47:37

相关推荐

  • TradingAgents-CN— 中文多智能体金融交易决策框架

    TradingAgents-CN— 中文多智能体金融交易决策框架TradingAgents-CN— 中文多智能体金融交易决策框架TradingAgents-CN— 中文多智能体金融交易决策框架TradingAgents-CN— 中文多智能体金融交易决策框架

    TradingAgents-CN是什么 tradingagents-cn是基于多智能体大模型的中文金融交易决策框架,在tauricresearch/tradingagents的基础上进行了开发,为中文用户提供了完整的文档体系和本地化支持。框架模拟真实交易公司的专业分工和协作决策流程,通过多个专业化a…

    2026年9月24日 • 用户投稿
    800
  • 使用 Java 读取文件并处理编码问题的实用指南

    使用 Java 读取文件并处理编码问题的实用指南使用 Java 读取文件并处理编码问题的实用指南使用 Java 读取文件并处理编码问题的实用指南使用 Java 读取文件并处理编码问题的实用指南

    本文旨在帮助开发者理解如何在 Java 中以字节方式读取文件,并正确处理字符编码问题。文章将详细介绍如何使用 FileInputStream 读取文件,以及如何在将字节转换为字符串时指定正确的编码方式,避免出现乱码问题。此外,还将讨论如何按固定大小的块读取文件,并提供代码示例进行演示。 理解字节流和…

    2026年9月24日 • 用户投稿
    000
  • 安装系统后,发现电脑硬件温度过高,是什么原因?

    安装系统后,发现电脑硬件温度过高,是什么原因?安装系统后,发现电脑硬件温度过高,是什么原因?安装系统后,发现电脑硬件温度过高,是什么原因?安装系统后,发现电脑硬件温度过高,是什么原因?

    硬件温度过高主要由散热不良引起,如积灰、风扇故障、硅脂老化等;长期高温会缩短硬件寿命、引发降频、死机或蓝屏;可通过HWMonitor等软件监控温度,并定期清理灰尘、更换硅脂或风扇来解决。 电脑硬件温度过高,通常是散热不良导致的。可能是散热器积灰、风扇故障,也可能是硅脂老化,甚至可能是硬件本身的问题。…

    2026年9月24日 • 用户投稿
    400
  • Debian OpenSSL如何管理私钥和公钥

    Debian OpenSSL如何管理私钥和公钥Debian OpenSSL如何管理私钥和公钥Debian OpenSSL如何管理私钥和公钥Debian OpenSSL如何管理私钥和公钥

    在debian系统中,openssl是一个功能强大的工具,用于生成和管理私钥及公钥。以下是利用openssl管理私钥和公钥的基本流程: 生成私钥 生成RSA私钥: openssl genrsa -out private_key.pem 2048 此命令将创建一个2048位的RSA私钥,并将其存储在p…

    2026年9月24日 • 用户投稿
    800
  • AMD Radeon RX 7800 XT对决NVIDIA GeForce RTX 4070 Super:2K分辨率光追游戏,谁的性价比更能打动玩家?

    AMD Radeon RX 7800 XT对决NVIDIA GeForce RTX 4070 Super:2K分辨率光追游戏,谁的性价比更能打动玩家?AMD Radeon RX 7800 XT对决NVIDIA GeForce RTX 4070 Super:2K分辨率光追游戏,谁的性价比更能打动玩家?AMD Radeon RX 7800 XT对决NVIDIA GeForce RTX 4070 Super:2K分辨率光追游戏,谁的性价比更能打动玩家?AMD Radeon RX 7800 XT对决NVIDIA GeForce RTX 4070 Super:2K分辨率光追游戏,谁的性价比更能打动玩家?

    7800 XT在2K非光追游戏中帧数更稳,显存大、性价比高;RTX 4070 Super在光追和AI技术上领先,支持DLSS 3,适合追求高画质与未来兼容性的用户。 在2K分辨率下玩支持光追的游戏,RX 7800 XT和RTX 4070 Super各有优势,选择哪张卡更划算,得看你的具体需求和预算。…

    2026年9月24日 • 用户投稿
    100
  • Chrome浏览器怎么阻止网站在后台同步_禁止网站后台同步操作设置

    Chrome浏览器怎么阻止网站在后台同步_禁止网站后台同步操作设置Chrome浏览器怎么阻止网站在后台同步_禁止网站后台同步操作设置Chrome浏览器怎么阻止网站在后台同步_禁止网站后台同步操作设置Chrome浏览器怎么阻止网站在后台同步_禁止网站后台同步操作设置

    可通过禁用后台同步权限、移除已授权站点、启用节电模式及使用扩展程序四种方法阻止Chrome网站后台同步。首先在设置中进入“隐私和安全”→“网站设置”→“后台同步”,关闭全局功能或屏蔽特定网站;其次在“已获权限的网站”中删除目标站点的同步权限;然后通过访问chrome://settings/perfo…

    2026年9月24日 • 用户投稿
    800
  • 使用 Java 获取 ISO 8601 格式的日期和时间

    使用 Java 获取 ISO 8601 格式的日期和时间使用 Java 获取 ISO 8601 格式的日期和时间使用 Java 获取 ISO 8601 格式的日期和时间使用 Java 获取 ISO 8601 格式的日期和时间

    本文介绍了如何使用 Java 获取符合 ISO 8601 标准的日期和时间字符串,例如 2022-10-03T19:45:47.844Z。我们将探讨使用 java.time.Instant 类来获取 UTC 时间,并将其格式化为所需的字符串表示形式。同时,我们还会讨论时间精度以及如何避免使用过时的日…

    2026年9月24日 • 用户投稿
    000
  • 腾讯专有云企业版 TCE Terraform Provider 开源

    腾讯专有云企业版 TCE Terraform Provider 开源腾讯专有云企业版 TCE Terraform Provider 开源腾讯专有云企业版 TCE Terraform Provider 开源腾讯专有云企业版 TCE Terraform Provider 开源

    腾讯专有云企业版 (tce) 正式宣布开源其 tce terraform provider。该插件基于广受欢迎的基础设施即代码(infrastructure as code)工具 terraform 构建,致力于为 tce 用户提供高效、灵活的自动化资源编排能力。 据悉,TCE Terraform …

    2026年9月24日 • 用户投稿
    000
  • php-gd怎么销毁图像资源_php-gd释放内存中的图像

    使用imagedestroy()函数销毁PHP-GD图像资源以避免内存泄漏。创建的资源如$image需在处理后调用imagedestroy($image)释放,尤其在循环中应每轮结束前销毁资源,推荐结合is_resource()判断有效性,遵循“谁创建,谁销毁”原则,确保内存高效管理。 在使用 PH…

    2026年9月24日
    000
  • 小鹏汽车累计交付量突破80万台!上半年交付近20万台

    小鹏汽车累计交付量突破80万台!上半年交付近20万台小鹏汽车累计交付量突破80万台!上半年交付近20万台小鹏汽车累计交付量突破80万台!上半年交付近20万台小鹏汽车累计交付量突破80万台!上半年交付近20万台

    7月11日,小鹏汽车通过官方微博宣布,其累计新车交付量已成功突破80万台大关。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 小鹏G7 数据显示,今年6月份小鹏汽车共交付新车34611台,同比增长高达224%,连续第8个月单月交付量突破3万…

    2026年9月24日 • 用户投稿
    200
  • 如何通过BIOS调整CPU防掉压(Load-Line Calibration)实现稳定超频?

    如何通过BIOS调整CPU防掉压(Load-Line Calibration)实现稳定超频?如何通过BIOS调整CPU防掉压(Load-Line Calibration)实现稳定超频?如何通过BIOS调整CPU防掉压(Load-Line Calibration)实现稳定超频?如何通过BIOS调整CPU防掉压(Load-Line Calibration)实现稳定超频?

    LLC设置需平衡稳定性与安全性,通过BIOS中CPU防掉压功能减少高负载电压波动,避免系统崩溃;应从中间档位开始测试,配合电压设定调整,使满载时电压略降、轻载不过冲,并结合关闭多核增强、优化VCCIN等设置提升整体稳定性。 实现稳定超频时,CPU防掉压(Load-Line Calibration, …

    2026年9月24日 • 用户投稿
    000
  • mysql储存过程中循环语句有哪些

    mysql储存过程中循环语句有哪些mysql储存过程中循环语句有哪些mysql储存过程中循环语句有哪些mysql储存过程中循环语句有哪些

    MySQL存储过程中提供WHILE和REPEAT两种循环语句:WHILE循环:根据条件重复执行代码块,条件为真时继续执行。REPEAT循环:先执行代码块,再检查条件是否为真,为假则再次执行代码块。 MySQL存储过程中的循环语句 MySQL存储过程中支持以下两种循环语句: WHILE 循环 WHIL…

    2026年9月24日 • 用户投稿
    000
  • Java中实现PDF文档并排对比及差异高亮显示:使用pdfcompare库

    Java中实现PDF文档并排对比及差异高亮显示:使用pdfcompare库Java中实现PDF文档并排对比及差异高亮显示:使用pdfcompare库Java中实现PDF文档并排对比及差异高亮显示:使用pdfcompare库Java中实现PDF文档并排对比及差异高亮显示:使用pdfcompare库

    本文介绍了如何在Java环境中,利用开源库pdfcompare实现两个PDF文档的并排对比,并独立高亮显示其差异。针对传统方案合并PDF的痛点,pdfcompare提供了一种优雅的解决方案,确保原始文档结构不变,仅在各自副本中标记出不同之处,满足特定业务需求。 1. 背景与挑战 在处理文档版本控制或…

    2026年9月24日 • 用户投稿
    1100
  • Debian系统如何实现GitLab的高可用性

    Debian系统如何实现GitLab的高可用性Debian系统如何实现GitLab的高可用性Debian系统如何实现GitLab的高可用性Debian系统如何实现GitLab的高可用性

    在debian系统上实现gitlab的高可用性可以通过以下几种方法: 通过Kubernetes进行部署 安装Redis:利用Helm部署Redis,并配置持久化存储以确保数据的持久性。安装PostgreSQL:同样通过Helm部署PostgreSQL,并设置主从复制或集群模式,以确保数据的高可用性。…

    2026年9月24日 • 用户投稿
    700
  • 原神鹤观岛火炬怎么点亮 鹤观岛火炬解谜详细攻略

    原神鹤观岛火炬怎么点亮 鹤观岛火炬解谜详细攻略原神鹤观岛火炬怎么点亮 鹤观岛火炬解谜详细攻略原神鹤观岛火炬怎么点亮 鹤观岛火炬解谜详细攻略原神鹤观岛火炬怎么点亮 鹤观岛火炬解谜详细攻略

    原神鹤观岛知比山区域的地下洞穴中,新增了两组富有挑战性的火炬机关谜题,成为2.2版本后玩家们探索时的一大亮点。这些解谜设计延续了原神一贯的环境互动风格,同时融入了更具创意的视觉提示机制。 位于洞穴入口附近的小型密室是第一处火炬谜题的所在地。房间墙壁上刻画着太阳与星辰的古老壁画,其中部分星星呈现出明显…

    2026年9月24日 • 用户投稿
    200
  • Java 正则表达式非贪婪匹配替换:精准替换字符串中的特定部分

    Java 正则表达式非贪婪匹配替换:精准替换字符串中的特定部分Java 正则表达式非贪婪匹配替换:精准替换字符串中的特定部分Java 正则表达式非贪婪匹配替换:精准替换字符串中的特定部分Java 正则表达式非贪婪匹配替换:精准替换字符串中的特定部分

    本文旨在解决 Java 中使用正则表达式进行字符串替换时,如何避免过度匹配,实现对特定字符串的精准替换。通过使用单词边界 ,我们可以确保只替换独立的 $c 字符串,而不会影响到 $c_new 等包含 $c 的其他字符串。本文将提供详细的代码示例和解释,帮助开发者掌握这一技巧。 在 Java 中,使用…

    2026年9月24日 • 用户投稿
    1000
  • 如何在Debian 10(Buster)Linux上安装MySQL

    了解如何在debian 10(buster)linux上安装mysql。本指南将引导您完成在最新版本的debian系统上安装mysql 8或mysql 5.7的步骤。 第1步 – 准备工作 首先,确保您拥有Debian 10系统的shell访问权限。如果是远程系统,可以通过SSH连接。W…

    2026年9月24日
    1000
  • 对话非遗簪花传承人,华硕a豆携豆叮寻香泉州 国庆假期与未来香遇

    对话非遗簪花传承人,华硕a豆携豆叮寻香泉州 国庆假期与未来香遇对话非遗簪花传承人,华硕a豆携豆叮寻香泉州 国庆假期与未来香遇对话非遗簪花传承人,华硕a豆携豆叮寻香泉州 国庆假期与未来香遇对话非遗簪花传承人,华硕a豆携豆叮寻香泉州 国庆假期与未来香遇

    即日起至10月8日,时尚数码潮创先锋华硕a豆于福建泉州限时开启「与未来香遇」 “豆叮的寻香之旅”集章打卡活动,围绕茶桌仔、泉州鲤物、有鲤天台咖啡等三处特色地标打造沉浸式城市寻香狂欢;旗下ip豆叮以头戴非遗簪花的泉州限定皮肤萌力“占领”西街,延续上海安福路街区花车巡游派对的浪漫繁花景象,以“科技与非遗…

    2026年9月24日 • 用户投稿
    900
  • AI音频工具有哪些_好用的AI音频工具大全

    AI音频工具有哪些_好用的AI音频工具大全AI音频工具有哪些_好用的AI音频工具大全AI音频工具有哪些_好用的AI音频工具大全AI音频工具有哪些_好用的AI音频工具大全

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 魔音工坊:AI配音神器,轻松打造媲美真人声线 讯飞智作:科大讯飞出品的语音转换与配音利器 听脑AI:智能语音记录助手 Suno:高品质AI音乐创作平台 海绵音乐:字节旗下免费AI音乐创作与探索平…

    2026年9月24日 • 用户投稿
    300
  • Java正则表达式:利用词边界实现精确的非贪婪字符串替换

    Java正则表达式:利用词边界实现精确的非贪婪字符串替换Java正则表达式:利用词边界实现精确的非贪婪字符串替换Java正则表达式:利用词边界实现精确的非贪婪字符串替换Java正则表达式:利用词边界实现精确的非贪婪字符串替换

    本教程探讨如何在Java中使用正则表达式精确替换字符串中的特定部分,特别是在目标字符串不应消耗后续字符的场景。通过分析常见错误,文章详细介绍了词边界的原理与应用,展示了如何利用它实现非贪婪且不破坏原字符串结构的替换,确保匹配的精确性与替换结果的完整性。 在处理字符串替换时,我们经常面临需要精确匹配特…

    2026年9月24日 • 用户投稿
    700

发表回复

登录后才能评论
关注微信