将交易所名称和代码与 LCA 清单结果联系起来
Connecting exchange names and codes to LCA inventory results
我正在进入 Brightway2 进行一些能源系统建模,但我仍在适应所有概念。
我创建了一个小型自定义演示数据库,以及 运行 lca.lci() 和 lca.lcia()。 lca.inventory 和 lca.characterized_inventory 都是 return 结果的稀疏矩阵。我的问题可能非常简单,就是如何将矩阵中的值连接到交换名称和密钥。即,如果我想将结果打印到文件中,我将如何将交换与库存值相匹配?
谢谢。
要真正了解发生了什么,了解 "intermediate" 数据(存储为结构化文本文件)和 "processed" 数据(存储为 numpy 结构化数组)之间的区别很有用。 here and here 描述了这些概念。
但是,直接回答你的问题:每行和每列在不同的矩阵和数组中代表什么(例如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()}
然后直接使用它就可以获得你想要的信息。假设您想知道 supply_array
的第 10 行是什么,您可以简单地执行 inv_product_dict[10]
,在我的例子中会产生 ('ei32_CU_U', '4110733917e1fcdc7c55af3b3f068c72')
相同类型的逻辑适用于生物圈(或基本)流,在 lca.biosphere_dict
中找到(用 LCA 的说法,B 矩阵中的行),以及活动,在 lca.activity_dict
(A 或 B 矩阵的列中找到)。
请注意,您可以使用 lca.reverse_dict()
同时生成 activity_dict/product_dict/biosphere_dict 的反向。那么语法是:
rev_act_dict, rev_product_dict, rev_bio_dict = lca.reverse_dict()
我正在进入 Brightway2 进行一些能源系统建模,但我仍在适应所有概念。
我创建了一个小型自定义演示数据库,以及 运行 lca.lci() 和 lca.lcia()。 lca.inventory 和 lca.characterized_inventory 都是 return 结果的稀疏矩阵。我的问题可能非常简单,就是如何将矩阵中的值连接到交换名称和密钥。即,如果我想将结果打印到文件中,我将如何将交换与库存值相匹配?
谢谢。
要真正了解发生了什么,了解 "intermediate" 数据(存储为结构化文本文件)和 "processed" 数据(存储为 numpy 结构化数组)之间的区别很有用。 here and here 描述了这些概念。
但是,直接回答你的问题:每行和每列在不同的矩阵和数组中代表什么(例如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()}
然后直接使用它就可以获得你想要的信息。假设您想知道 supply_array
的第 10 行是什么,您可以简单地执行 inv_product_dict[10]
,在我的例子中会产生 ('ei32_CU_U', '4110733917e1fcdc7c55af3b3f068c72')
相同类型的逻辑适用于生物圈(或基本)流,在 lca.biosphere_dict
中找到(用 LCA 的说法,B 矩阵中的行),以及活动,在 lca.activity_dict
(A 或 B 矩阵的列中找到)。
请注意,您可以使用 lca.reverse_dict()
同时生成 activity_dict/product_dict/biosphere_dict 的反向。那么语法是:
rev_act_dict, rev_product_dict, rev_bio_dict = lca.reverse_dict()