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

如何加速并扩展处理20000×20000指示矩阵的Python函数?

问题描述

我有一个处理形状为(20000×20000)指示矩阵的函数,需要执行4亿次(20000×20000)。注意传入函数的indicator_Matrix必须是Pandas DataFrame格式,实际场景中该DataFrame包含时间索引和整数列(此处已简化问题)。

Pandas实现

indicator_Matrix = pd.DataFrame(np.random.randint(0,2,[20000,20000]))
def operations(indicator_Matrix):
   s = indicator_Matrix.sum(axis=1)
   d = indicator_Matrix.div(s,axis=0)
   res = d[d>0].mean(axis=0)
   return res.iloc[-1]

我尝试用Numpy改写优化,但运行耗时仍极长;也试过concurrent.futures.ThreadPoolExecutor,但相比列表推导式提升不大。

Numpy实现

indicator_Matrix = pd.DataFrame(np.random.randint(0,2,[20000,20000]))
def operations(indicator_Matrix):
   s = indicator_Matrix.to_numpy().sum(axis=1)
   d = (indicator_Matrix.to_numpy().T / s).T
   d = pd.DataFrame(d, index = indicator_Matrix.index, columns = indicator_Matrix.columns)
   res = d[d>0].mean(axis=0)
   return res.iloc[-1]

output = [operations(indicator_Matrix) for i in range(0,20000**2)]

注:将d重新转为DataFrame是因为需要获取列均值并保留最后一列的均值(使用.iloc[-1])。d[d>0].mean(axis=0)返回列均值,示例如下:

2478    1.0
0       1.0

更新:目前仍受困于此问题,想了解在本地桌面使用cudf、CuPy等GPU库是否能带来性能改善。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 20:10:49