我正在进入 Brightway2 进行一些能源系统建模,但我仍然习惯于所有的概念。
我创建了一个小型自定义演示数据库,并运行 lca.lci() 和 lca.lcia()。lca.inventory 和 lca.characterized_inventory 都返回结果的稀疏矩阵。我的问题可能很简单,即如何将矩阵中的值连接到交换名称和密钥。即,如果我想将结果打印到文件中,我将如何将交换与库存值相匹配?
谢谢。
我正在进入 Brightway2 进行一些能源系统建模,但我仍然习惯于所有的概念。
我创建了一个小型自定义演示数据库,并运行 lca.lci() 和 lca.lcia()。lca.inventory 和 lca.characterized_inventory 都返回结果的稀疏矩阵。我的问题可能很简单,即如何将矩阵中的值连接到交换名称和密钥。即,如果我想将结果打印到文件中,我将如何将交换与库存值相匹配?
谢谢。
要真正了解正在发生的事情,了解“中间”数据(存储为结构化文本文件)和“已处理”数据(存储为 numpy 结构化数组)之间的区别很有用。这些概念在这里和这里都有描述。
但是,要直接回答您的问题:不同矩阵和数组(例如lca.inventory
矩阵、lca.supply_array
、 )中的每一行和每一列所代表的内容都包含在与您的对象lca.characterized_inventory
相关联的一组字典中。LCA
这些是:
activity_dict
:技术领域矩阵中的列 product_dict
:技术领域矩阵中的行 biosphere_dict
: 生物圈矩阵中的行例如,lca.product_dict
产量,在 LCA 的情况下,我刚刚做了:
{('ei32_CU_U', '671c1ae85db847083176b9492f000a9d'): 8397,
('ei32_CU_U', '53398faeaf96420408204e309262b8c5'): 536,
('ei32_CU_U', 'fb8599da19dabad6929af8c3a3c3bad6'): 7774,
('ei32_CU_U', '28b3475e12e4ed0ec511cbef4dc97412'): 3051, ...}
字典中key
的 是我的库存数据库中的实际产品,而value
是demand_array
或 中的行supply_array
。
更有用的可能是这些字典的反面。假设您想知道例如您supply_array
所指的值是什么,您可以使用dict comprehension创建一个反向字典:
inv_product_dict = {v: k for k, v in lca.product_dict.items()}
然后直接用它来获取你想要的信息。假设你想知道第 10 行是什么supply_array
,你可以简单地做inv_product_dict[10]
,在我的例子中产生('ei32_CU_U', '4110733917e1fcdc7c55af3b3f068c72')
相同类型的逻辑适用于lca.biosphere_dict
(在 LCA 用语中,B 矩阵中的行)中发现的生物圈(或基本)流,以及在( A或B矩阵 的lca.activity_dict
列)中发现的活动。
请注意,您可以同时使用lca.reverse_dict()
. 那么语法是:
rev_act_dict, rev_product_dict, rev_bio_dict = lca.reverse_dict()