You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不修改外层for循环前提下用value_counts填充矩阵的高效方法咨询

解决方案

你可以直接利用NumPy的向量化索引特性替换掉Python层面的循环,仅需一行代码即可完成填充,性能远高于逐行迭代,且完全不需要修改外层逻辑、也不会用到groupby:

# 直接替换原有的两行for循环代码即可
res_matrix[i, table_count.index] += table_count.values.astype(int)

原理说明

  • 你通过value_counts()得到的table_count是Series结构,它的索引就是b列的取值val,对应值就是出现次数cnt
  • 代码直接通过res_matrix[i, table_count.index]定位到结果矩阵第i行所有需要更新的位置,一次性批量累加对应计数
  • 整个操作底层由C实现,完全规避了Python循环的解释器开销,数据量越大时性能优势越显著

兼容性说明

就算当前i对应的b列存在缺失的取值(部分j没有出现)也不会影响结果:未出现的j不会出现在table_count的索引里,自然不会被赋值,相当于加0,和原有逻辑的输出结果完全一致。


内容的提问来源于stack exchange,提问作者Fabrizio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:18:03