我如何在pandas/numpy/pandas中组织许多计算的不均匀矩阵

2024-03-28 12:29:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在计算一个模型,它需要在一个大矩阵中进行大量计算,表示家庭(编号N,大约10E4)和公司(编号M,大约10E4)之间的相互作用。特别是,我要执行以下步骤:

  1. X2是一个nxm矩阵,表示每个家庭和每个公司之间的成对距离。该步骤是将每个条目乘以一个参数gamma。你知道吗
  2. delta是向量长度M。步骤是将delta从1广播到矩阵的行中。你知道吗
  3. 从2开始对矩阵求幂。你知道吗
  4. 从3开始计算矩阵的行和。你知道吗
  5. 广播除法按行和向量从4除成行的矩阵从3。你知道吗
  6. w是一个长度为N的向量。步骤是将w从5乘到矩阵的列中。你知道吗
  7. 最后一步是从6中取矩阵的列和。你知道吗

这些步骤必须在模型模拟与数据匹配的上下文中执行1000次。目前,我有一个使用大型nxmnumpy数组并使用矩阵代数运算来执行上述步骤的实现。你知道吗

我希望能够通过消除距离大于某个临界值r的所有“单元格”来减少计算次数。

在执行所有需要执行的操作(指数运算、行/列求和、跨行和列广播)时,如何组织数据来执行此操作?你知道吗

我想到的解决方案类似于以“长格式”存储距离矩阵,每一行代表一个家庭/公司对,而不是N x M矩阵,删除所有无效行以获得长度小于NM的数组,然后以这种格式执行所有计算。在这个解决方案中,我想知道是否可以使用pandas数据帧使“broadcasts”和“row sums”正常(快速)工作。我怎样才能做到?你知道吗

(或者,如果有更好的方法我应该去探索,我很想知道!)你知道吗


Tags: 数据模型距离格式家庭步骤公司矩阵