0

我想为技术圈和生物圈矩阵堆叠和存储采样值,以便有效地重用(例如用于敏感性分析)。现在专注于技术领域矩阵,这就是我所拥有的:

  • 保存的 CSR 稀疏矩阵,每个 Monte Carlo 迭代一个
  • activity_dictproduct_dict范围=LCA 对象)
  • mapping字典(范围=项目)

我最终想要的是:

(1) 一个数组,其中行是我的技术领域矩阵中的非零元素,列是不同的蒙特卡罗迭代;和

(2) 确定第i行所指内容的某种方式。

我知道我可以简单地:

  • 将我的 CSR 稀疏矩阵转换为 COO(即coo_matrix = mc.technosphere_matrix.tocoo())并 hstack 生成的 COO 矩阵data

  • 将一个 coo_matrix的rowand存储col为数组(例如coo_rows=coo_matrix.rowand coo_cols=coo_matrix.col)。这些索引对于我的所有矩阵都是相同的。

  • 使用product_dictand的反面activity_dict来确定每个元素所指的内容。例如,要知道我的 hstacked 数据中的第i行指的是什么,我可以使用reverse_activity_dict[coo_cols[i]]获取我的
    活动名称reverse_product_dict[coo_rows[i]]来获取我的产品。

然而,这并没有利用已经优化的brightway功能......我只是看不到如何使用这些功能。

答案可能就在这里,但遥不可及……

作为奖励:我的 MC 迭代可能来自具有不同mappings 的不同项目(但具有相同的数据库名称)。

4

1 回答 1

0

我终于决定了以下存储策略:

  • 如上所述,保存一组数据。
  • 保存索引列表,其中索引定义为(input key, output key, type). 如其他地方所示,这些可以有效地与 Brightway MatrixBuilder类一起使用。
于 2018-03-17T14:39:08.807 回答